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

Webpack v5迁移构建报错:模块解析失败(Unexpected token)

解决方案:Webpack v5迁移后JSX模块解析错误

问题根源

报错指向JSX语法(<HashRouter>/<Application>)无法被解析,说明你的babel-loader没有正确处理包含JSX的.js文件,大概率是配置细节出错导致Webpack未触发转译规则。

修复步骤

1. 修正exclude规则的写法

你的配置里exclude: '/node_modules/'是字符串格式,但Webpack需要正则表达式才能正确匹配目录路径,字符串会被当作精确路径匹配,可能导致规则失效。修改为:

exclude: /node_modules/

2. 确保Babel核心依赖已安装

Webpack 5对Babel版本有明确要求,确认已安装以下必备依赖:

npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader core-js@3

3. 扩展test规则覆盖JSX文件(可选但推荐)

虽然当前文件是.js后缀,建议将test规则改为同时匹配.js和.jsx,避免后续新增JSX文件再次踩坑:

test: /\.(js|jsx)$/

4. 验证Webpack配置的规则引入

检查webpack.build.js中是否正确合并了common.js返回的规则,确保module.rules数组包含你的babel-loader规则,示例:

const common = require('./common');
module.exports = {
  // ...其他配置项
  module: {
    rules: [...common.getRules(config), /* 其他资源规则 */]
  }
}

5. 清除Webpack缓存

Webpack 5默认开启持久化缓存,旧缓存可能导致新配置不生效,执行构建时添加--no-cache参数:

node --trace-deprecation node_modules/webpack/bin/webpack.js --no-cache

额外排查方向

如果修复后仍有问题,可以检查:

  • src/index.js是否在Webpack的入口文件范围内
  • 项目根目录是否存在.babelrc/babel.config.json,是否与loader配置的presets/plugins产生冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:30:18