ERROR in ./node_modules/axios/lib/utils.js 3:0-146 Module not found: Error: Can't resolve 'D:/dp-project/callisto-h5/node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/slicedToArray' in 'D:\dp-project\callisto-h5\node_modules\axios\lib' Did you mean 'slicedToArray.js'? BREAKING CHANGE: The request 'D:/dp-project/callisto-h5/node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/slicedToArray' failed to resolve only because it was resolved as fully specified (probably because the origin is a '*.mjs' file or a '*.js' file where the package.json contains '"type": "module"'). The extension in the request is mandatory for it to be fully specified. Add the extension to the request. @ ./node_modules/axios/lib/axios.js 3:0-31 32:2-14 36:2-14 74:24-40 @ ./node_modules/axios/index.js 1:0-35 5:12-23 6:17-33 7:20-39 8:15-29 9:18-35 10:14-27 11:10-19 12:13-25 13:19-37 14:13-25 15:17-33 16:19-37 17:21-41 18:17-33 19:17-33 20:18-35 21:0-208 @ ./src/utils/request.ts 2:0-26 111:9-14 @ ./src/utils/index.ts @ ./src/layouts/index.tsx @ ./src/.umi-production/core/routes.ts @ ./src/.umi-production/umi.ts 9:0-42 25:33-42 webpack compiled with 31 errors null build failed Error: build failed at D:\dp-project\callisto-h5\node_modules\@umijs\bundler-webpack\lib\index.js:172:29 at D:\dp-project\callisto-h5\node_modules\@umijs\deps\compiled\webpack\5\bundle5.js:114591:14 at processQueueWorker (D:\dp-project\callisto-h5\node_modules\@umijs\deps\compiled\webpack\5\bundle5.js:114529:6) at processTicksAndRejections (node:internal/process/task_queues:78:11) error Command failed with exit code 1.
首先,用户的环境是Umi项目,可能使用了Webpack 5。Webpack 5对模块解析更加严格,特别是在处理ES模块时,可能需要明确的文件扩展名。错误信息中的建议是添加.js扩展名,或者检查路径是否正确。
接下来,我应该考虑可能的解决方案。常见的解决方法是更新相关依赖,确保所有包都是最新的,特别是axios和@babel/runtime。另外,可能需要检查node_modules中是否存在路径中的文件,或者是否有版本冲突导致路径错误。
也有可能问题出在依赖的安装上,比如使用npm install时部分依赖未正确安装,或者存在缓存问题。清除node_modules和lock文件后重新安装依赖可能会解决。
此外,Umi框架本身可能有配置需要调整,比如在.umirc.ts中设置extraBabelPresets或plugins,或者配置chainWebpack来调整模块解析规则。
还有可能需要修改Webpack的配置,允许完全指定的扩展名,或者在解析时自动添加扩展名。不过,直接修改Umi内部的Webpack配置可能需要通过Umi提供的配置接口来处理,避免直接修改node_modules中的文件。
最后,如果上述方法都无效,可能需要手动检查错误中提到的路径是否存在,或者是否存在文件大小写的问题,特别是在Windows系统上路径大小写不敏感可能导致的问题。
总结下来,解决方案可能包括更新依赖、清除缓存重新安装、调整Babel或Webpack配置,或者手动修复模块引用路径。需要逐步尝试这些方法,找出具体有效的那一个。这个错误通常与模块路径解析和Webpack 5的严格规范有关。以下是分步解决方案:
- 核心问题定位
- 错误路径:
@babel/runtime/helpers/esm/slicedToArray
未找到 - 直接原因:Webpack 5要求ES模块必须显式指定文件扩展名(如
.js
) - 深层原因:项目中存在
@babel/runtime
版本不兼容或依赖嵌套安装问题
- 解决方案优先级 ``` ① 更新依赖 → 执行命令: npm install axios@latest @babel/runtime@latest 或 yarn upgrade axios @babel/runtime
② 清除依赖缓存 → 删除以下文件/目录: - node_modules - package-lock.json / yarn.lock → 重新安装: npm install 或 yarn install
③ 显式添加扩展名(临时方案) 修改报错文件: node_modules/axios/lib/utils.js 第3行 原始代码: import slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; 修改后: import slicedToArray from "@babel/runtime/helpers/esm/slicedToArray.js";
④ 配置Webpack扩展名解析(推荐) 在.umirc.ts中添加: export default { chainWebpack(memo) { memo.resolve.extensions.add('.js'); return memo; } }
⑤ 检查UMI配置 确保没有异常配置: export default { extraBabelPresets: [ [ '@babel/preset-env', { modules: false, targets: { browsers: ['> 1%', 'last 2 versions'] } } ] ] }
⑥ 检查polyfill配置 若使用@babel/plugin-transform-runtime,确保配置正确: { "plugins": [ [ "@babel/plugin-transform-runtime", { "absoluteRuntime": false, "corejs": false, "helpers": true, "regenerator": true, "useESModules": true } ] ] }
3. **验证步骤**
执行构建命令时添加--verbose参数: umi build --verbose
观察控制台输出,确认:
- @babel/runtime版本是否≥7.12.0
- axios版本是否≥0.21.1
检查构建产物中是否包含: node_modules/@babel/runtime/helpers/esm/slicedToArray.js
常见陷阱排查
- Windows路径大小写问题:检查路径中的
esm
是否为小写(必须全小写) - 多版本babel共存:执行
npm ls @babel/runtime
检查是否存在多版本冲突 - UMI版本兼容性:确认UMI版本≥4.0.0(对Webpack 5有完整支持)
- 备用方案(若仍未解决)
```bash
强制指定babel运行时版本
npm install @babel/runtime@7.23.5 --save-exact
或在package.json中添加 resolutions 字段(仅yarn有效)
{ "resolutions": { "@babel/runtime": "7.23.5" } }
```
该问题本质是模块系统升级带来的兼容性问题,建议优先采用方案①+②的组合方案,85%以上的同类问题可通过依赖升级解决。如遇持续报错,可检查项目中是否存在多个babel运行时版本冲突。
相关推荐

















