我已经四处寻找解决这个问题的办法了。他们都建议在你的tsconfig中添加"jsx": "react"。json文件。我已经做到了。另一个是添加“include:[]”,我也这样做过。然而,当我试图编辑.tsxfiles时,我仍然得到错误。下面是我的tsconfig文件。
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"allowJs": true,
"checkJs": false,
"jsx": "react",
"outDir": "./build",
"rootDir": "./lib",
"removeComments": true,
"noEmit": true,
"pretty": true,
"skipLibCheck": true,
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true
},
"include": [
"./lib/**/*"
],
"exclude": [
"node_modules"
]
}
任何建议都会很有帮助。我使用babel 7编译所有的代码与env, react和typescript预设。如果你们需要更多的文件来帮助调试,请告诉我。
每次我运行npm start时,它都会覆盖我在{jsx:…}使用React - JSX,以便与React 17中的JSX转换兼容。
The following changes are being made to your tsconfig.json file:
- compilerOptions.jsx must be react-jsx (to support the new JSX transform in React 17)
问题是VSCode使用了旧版本的typescript(4.0.3),而项目附带的typescript版本是(4.1.2)。
下面的方法对我很有效:
转到命令面板CTRL+Shift+P(或Mac上⌘+Shift+P)。
选择“TypeScript: Select a TypeScript Version…”
选择“使用工作区版本”。
PS:这个选项不会显示,除非你在任何。tsx文件(谢谢@awran5的评论和很好的捕捉)
我的经验
我正在转换现有的新创建的NextJS应用程序使用TS遵循官方的下一步指南,当我到达页面/_app。需要修改TSX。
我按照VSCode提示添加——jsx标志,这将添加以下行到next.config.js文件:
module.exports = {
reactStrictMode: all,
};
这导致了另一个错误:
Failed to load next.config.js, see more info here https://nextjs.org/docs/messages/next-config-error
ReferenceError: all is not defined
在删除next.config.js文件中的行并重新启动VSCode并重新运行yarn dev或npm运行dev,瞧!它开始工作了!
这个答案是关于VS Code和这个特定的错误在该IDE中持续存在。(有人可能会觉得这很有用)
如果你正在使用Webpack或其他类似的工具,即使你的tsconfig已经将jsx的编译器选项设置为React,你仍然可能会得到这个错误。
有一个解决方案。问题是VS Code已经内置了自动检测tsc。
为了消除编辑器中的错误,你可以把这个放在你的用户设置中:
{
"typescript.tsc.autoDetect": "off"
}
请注意,您将不再得到tsc自动检测,但如果您主要使用Webpack等工具或自己处理带有标记的命令,那么这并不是什么大问题。
注意:只有当错误在VS Code中持续存在时才这样做。要确保这种行为持续存在,在配置tsconfig之后重新加载窗口并重新启动编辑器。json文件。