我已经四处寻找解决这个问题的办法了。他们都建议在你的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预设。如果你们需要更多的文件来帮助调试,请告诉我。


当前回答

添加 { " compilerOptions ": { “jsx”:“反应” } } “tsconfig。重新启动编辑器就解决了这个问题。

其他回答

每次我运行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的评论和很好的捕捉)

这个答案是关于VS Code和这个特定的错误在该IDE中持续存在。(有人可能会觉得这很有用)

如果你正在使用Webpack或其他类似的工具,即使你的tsconfig已经将jsx的编译器选项设置为React,你仍然可能会得到这个错误。

有一个解决方案。问题是VS Code已经内置了自动检测tsc。

为了消除编辑器中的错误,你可以把这个放在你的用户设置中:

{
    "typescript.tsc.autoDetect": "off"
}

请注意,您将不再得到tsc自动检测,但如果您主要使用Webpack等工具或自己处理带有标记的命令,那么这并不是什么大问题。

注意:只有当错误在VS Code中持续存在时才这样做。要确保这种行为持续存在,在配置tsconfig之后重新加载窗口并重新启动编辑器。json文件。

我遵循了这里提到的“更简单的解决方案”https://github.com/facebook/create-react-app/issues/10144#issuecomment-733278351

"...更新包中的TS版本。Json到4.1.2"

然后重新启动VS Code。

简单地用命令面板重新启动TS服务器并不能解决我的问题。

我不需要任何其他步骤。

在我的情况下,我尝试了所有的tsconfig。json,项目属性对话框,重新启动IDE,检查安装的TypeScript版本等,它仍然有这个错误。找到开发人员,使项目添加条件属性的项目文件,这样TypeScriptJSXEmit没有定义在所有的配置(这混淆了项目属性对话框)。

这是从我的项目文件显示的问题摘录:

...
  <PropertyGroup Condition="'$(Configuration)' == 'QA'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptJSXEmit>React</TypeScriptJSXEmit>
...

重新启动IDE似乎太残酷了,而且并不总是有效。你想要重新启动TS服务器:

注意:该选项只会显示当你的IDE有任何TS相关文件打开