You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级react-scripts至5.0.0后JSX语法启用失败求助

升级react-scripts至5.0.0后部署出现JSX语法支持错误的解决方案

问题背景

为修复安全漏洞,将项目的react-scripts从旧版本升级到5.0.0,同步升级了webpack版本。本地开发环境运行正常,但部署后出现JSX语法不被支持的构建错误。

报错信息

Uncaught runtime errors:
×
ERROR
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /app/app/src/index.js: Support for the experimental syntax 'jsx' isn't currently enabled (52:3):


  50 |
  51 | const app = (
> 52 |   <React.StrictMode>
     |   ^
  53 |   <Provider store={store}>
  54 |       <BrowserRouter>
  55 |           <App config={config} />


Add @babel/preset-react to the 'presets' section of your Babel config to enable transformation.
If you want to leave it as-is, add @babel/plugin-syntax-jsx to the 'plugins' section to enable parsing.
    at instantiate (/app/node_modules/@babel/parser/lib/index.js:63:32)
    at constructor (/app/node_modules/@babel/parser/lib/index.js:358:12)
    at Parser.raise (/app/node_modules/@babel/parser/lib/index.js:3255:19)
    at Parser.expectOnePlugin (/app/node_modules/@babel/parser/lib/index.js:3301:18)
    at Parser.parseExprAtom (/app/node_modules/@babel/parser/lib/index.js:11245:18)
    ...(省略后续堆栈信息)

环境信息

  • Node版本:14.21.3
  • npm版本:6.14.18
  • React/react-dom版本:17.0.1
  • react-scripts版本:5.0.0
  • webpack版本:5.82.0

已尝试的无效操作

手动在项目根目录添加了webpack.config.js、.babelrc、babel.config.js配置文件,并安装了额外的babel开发依赖,但部署后错误依旧。相关配置如下:

package.json(devDependencies片段)

"devDependencies": {
    "@babel/cli": "^7.22.9",
    "@babel/core": "^7.22.9",
    "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
    "@babel/preset-env": "^7.22.9",
    "@babel/preset-react": "^7.22.5",
    "webpack": "^5.82.0"
}

webpack.config.js

module.exports = {
  entry: "./src/index.js",
  resolve: {
    extensions: [".ts",".jsx" , ".tsx", ".js", ".json"],
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/i,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [
              '@babel/preset-env',
              '@babel/preset-react',
            ],
          },
        },
      },
      {
        test:/\.css$/,
        use:["style-loader","css-loader"]
      }
    ],
  }
}

.babelrc

{
    "presets": ["@babel/preset-env", "@babel/preset-react"]
}

babel.config.js

module.exports = {
  presets: [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
};

有效解决方案

1. 移除自定义配置文件

直接删除项目根目录下的webpack.config.js、.babelrc、babel.config.js。react-scripts 5.x已经内置了完整且适配的Babel和Webpack配置,自定义配置会干扰内置逻辑,导致JSX解析失败。

2. 卸载不必要的依赖

执行以下命令卸载手动安装的babel和webpack相关依赖:

npm uninstall @babel/cli @babel/core @babel/plugin-proposal-private-property-in-object @babel/preset-env @babel/preset-react webpack

react-scripts已经包含了所有构建所需的依赖包,手动安装的高版本依赖会和内置版本冲突,引发构建异常。

3. 清理缓存并重新构建

  • 清理npm缓存:
    npm cache clean --force
    
  • 删除node_modules和package-lock.json:
    rm -rf node_modules package-lock.json
    
  • 重新安装依赖:
    npm install
    
  • 重新构建项目:
    npm run build
    

4. 检查部署流程

确保部署时使用的是npm run build生成的build文件夹,不要直接上传源码;同时确认部署环境的Node版本和本地一致,避免版本差异导致的问题。

问题根源

create-react-app的react-scripts封装了一套标准化的构建配置,其中已经包含@babel/preset-react来处理JSX语法。手动添加的配置文件会破坏内置的配置链,导致Babel无法正确识别JSX;此外,手动安装的依赖版本与react-scripts内置版本不兼容,进一步加剧了构建错误。

内容的提问来源于stack exchange,提问作者mayapavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:11:53