构建:除非提供“--jsx”标志,否则无法使用 JSX
Posted
技术标签:
【中文标题】构建:除非提供“--jsx”标志,否则无法使用 JSX【英文标题】:Build: Cannot use JSX unless the '--jsx' flag is provided 【发布时间】:2016-05-12 05:29:14 【问题描述】:我正在使用 VS 2013 和 tsx 文件进行反应。我可以手动构建我的项目就好了。 (右键单击并构建解决方案)
但是当我尝试在 Azure 上发布时,VS 会尝试再次构建,但当时我收到了一堆错误,如下所示:
Error 2 Build: Cannot use JSX unless the '--jsx' flag is provided.
并指向我的 tsx 文件。
似乎 Azure Publish 使用的构建步骤与 VS 2013 不同。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我将"jsx": "react"
添加到我的tsconfig.json
以解决此错误:
"compileOnSave": true,
"compilerOptions":
"target": "es6",
"outFile": "Content/app.js",
"sourceMap": true,
"jsx": "react"
【讨论】:
我已经试过了,它适用于 VS 构建。但是当我尝试在 Azure 上发布时,VS 会尝试再次构建,但当时我遇到了错误。【参考方案2】:将此添加到 csproj 在 VS2015 中为我工作:
<PropertyGroup>
<TypeScriptJSXEmit>react</TypeScriptJSXEmit>
</PropertyGroup>
发件人:Working around "Cannot use JSX unless the '--jsx' flag is provided." using the TypeScript 1.6 beta
【讨论】:
我的 .csproj 中已经有了这个。您是否尝试过在 Azure 上发布? 不幸的是我没有。抱歉,它不适合你。【参考方案3】:在您的 tsconfig.json
中添加一个属性 jsx,其反应值为 "jsx": "react"
。其次,您还应该包含文件以反映像这样的编译器选项(index.tsx)。
"compilerOptions":
"outDir": "./build/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"jsx": "react"
,
"files": [
"./src/app/index.tsx"
]
【讨论】:
任何引用多个文件的选项,例如 * ?【参考方案4】:如果您碰巧仍然为此苦苦挣扎,请检查您的项目设置,确保 TSX 文件中的 JSX 编译设置为 React,并仔细检查您正在查看正确的构建配置(很容易错过,而且我不知道为什么 TS build 是特定于构建配置的)。在 VS2015 上测试。
编辑:我应该提到我能够从 VS2015 发布到 Azure;我最初遇到了同样的错误,并意识到我的非发布构建配置已更新,但发布配置未更新。我进行了上述更改,然后发布成功。
【讨论】:
正如我之前多次说过的。这与 VS 构建无关。它是关于 Azure 部署的。 VS 2015 构建良好,当我尝试将网站发布到 Azure 时出现错误。 部署到 Azure 可以正常使用此功能;我昨晚确实做到了。当我遇到这个问题时,我遇到了这个没有答案的问题,但我突然意识到我正在发布一个发布版本,而我还没有使用该配置进行构建。我为调试和测试版正确配置了项目设置,但没有发布。所以我决定把这作为一种可能性。如果这对你没有帮助,那就这样吧,但没有必要对此感到厌烦。 您没有特别提到 Azure 发布。因此,您的答案不会为以前的答案添加任何新内容。如果它适用于您的 Azure 发布过程,最好提及一下。由于以前的用户只考虑“VS build”而不是 Azure Publish 工具。如果你看到我以前所有的 cmets,我就是在告诉别人,这里没有什么可冒犯的。【参考方案5】:此处提供的解决方案在 Visual Studio 2017 中对我有用
https://www.koskila.net/fixed-cannot-use-jsx-unless-the-jsx-flag-is-provided/
基本上改变了 TS Build 属性。
右键项目->属性->TypeScript Build
在 TSX 文件中的 JSX 编译选项中选择 React。
【讨论】:
【参考方案6】:今天,从使用 es2019 + typescript 4.1.3 开始,我相信 npm start 命令会导致一条消息说它改变了 tsconfig.json(对我来说)
进入: "jsx": "react-jsx",
不过,Visual Studio 2019 不支持该设置,这会导致大量错误列表。
【讨论】:
根据此答案***.com/a/64976666/3559967 选择“使用工作区版本”或根据此答案***.com/a/67467204/3559967 添加带有变量DISABLE_NEW_JSX_TRANSFORM=true
的.env 文件【参考方案7】:
tsc --jsx helloWorld.tsx http://staxmanade.com/2015/08/playing-with-typescript-and-jsx/
可能对你有帮助
【讨论】:
手动构建时可以,但尝试发布到 Azure 后就不行了。因为 Azure 使用的是另一个路径的 build.exe,而不是使用与 VS 2015 相同的方法。以上是关于构建:除非提供“--jsx”标志,否则无法使用 JSX的主要内容,如果未能解决你的问题,请参考以下文章
当“jsx”为“react-jsx”时,除非提供“--jsx”标志,否则无法使用 JSX
出现错误 TS17004:除非提供了“--jsx”标志,否则无法使用 JSX
我想在 Laravel 项目中使用 TypeScript 和 React
除非刷新页面,否则React loadable无法在每个新构建上加载组件