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

维护5年历史Python+React项目时遇Webpack解析错误求助

解决Webpack编译React旧项目时的"Unexpected token"加载器错误

错误分析

这个报错的核心是Webpack依赖的旧版Acorn解析器无法识别index.js第37行的语法,常见原因是代码使用了JSX、ES6+特性,但项目缺少对应的Babel加载器配置,或者加载器与旧版Webpack/项目依赖不兼容。

解决步骤

1. 定位问题代码

先打开/home/kaiz3n/Desktop/iris/iris-agent/app/index.js,查看第37行第6列的内容,确认是JSX标签(比如<Component>)、箭头函数、解构赋值这类旧解析器不支持的语法,明确需要转译的内容。

2. 配置Babel加载器

旧项目通常搭配babel-loader@7及更低版本,配合babel-preset-react和babel-preset-es2015,按以下步骤操作:

  • 安装必要依赖:
npm install babel-loader@7 babel-core babel-preset-react babel-preset-es2015 --save-dev
  • 修改webpack.config.js,添加loader规则(注意旧版Webpack用loaders而非rules):
    如果是Webpack 3+:
module: {
  rules: [
    {
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel-loader',
      options: {
        presets: ['es2015', 'react']
      }
    }
  ]
}

如果是Webpack 1/2:

module: {
  loaders: [
    {
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel-loader',
      query: {
        presets: ['es2015', 'react']
      }
    }
  ]
}

3. 兼容旧版解析器

如果配置后仍报错,可能是Acorn版本太老无法处理某些ES6语法,安装转译插件:

npm install babel-plugin-transform-es2015-modules-commonjs --save-dev

在项目根目录创建或修改.babelrc:

{
  "presets": ["es2015", "react"],
  "plugins": ["transform-es2015-modules-commonjs"]
}

4. 调整Webpack扩展名解析

确保Webpack能识别JSX文件(如果项目用了JSX),在webpack.config.js中添加:

resolve: {
  extensions: ['.js', '.jsx']
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:50:36