我已经四处寻找解决这个问题的办法了。他们都建议在你的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的评论和很好的捕捉)

其他回答

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

即使在运行npx tsc——jsx preserve时,我也得到了这个错误,所以——jsx是明确指定的。

在我的例子中,这是因为在tsconfig中有incremental: true。显然,在增量模式下,tsc可能会忽略——jsx设置,而使用以前构建的信息(其中——jsx仍然被禁用)。作为一种解决方案,我暂时转向增量编译,重新编译,然后重新启用它。也许删除构建构件也可以工作。

对我来说,重新启动IDE就是解决办法。重新启动后,弹出一个消息框,显示我没有安装任何typescript,你想安装typescript 3.3吗? 我安装了它,现在它工作得很好。请看这里的输出窗口

这是@basarat回答的后续,因为他部分解决了我的问题。我遇到的问题是错误TS6046:“——jsx”选项的参数必须是:“preserve”,“react-native”,“react”。我是这样解决的:

重新启动IDE 删除tsconfig.json 重新初始化您的tsconfig。使用' ' ' tsc——init````

也许第一步可以跳过,但我没有对此进行调查。

你可以用npm install注释再次安装npm包。这对我很管用。