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


当前回答

我的经验

我正在转换现有的新创建的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,瞧!它开始工作了!

其他回答

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

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

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

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

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

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

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

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

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

Create-react-app打破了常规。截至2022年5月

在tsconfig中,include只被设置为/src,更改为:

  "include": [
    "./src/**/*.ts"
  ]

重新启动我的IDE没有帮助。重启TypeScript服务器确实解决了这个问题。

我有一个monorepo, Webstorm自动选择了一个旧版本的TypeScript作为子包。修复方法是在页脚单击TypeScript X.X.X,然后选择Configure TypeScript…并选择正确的软件包,这对我来说在Webstorm 2021.1中是有效的