Vue3+Vite打包报错:Rollup failed to resolve import
报错信息:
vite v6.3.6 building for production... ✓ 1646 modules transformed. ✗ Build failed in 13.09s error during build: [vite]: Rollup failed to resolve import "node_modules/axios/index.cjs" from "D:/MyCode/wylims-jm/lims-client/src/views/capital/CapitalAllocate.vue?vue&type=script&setup=true&lang.ts". This is most likely unintended because it can break your application at runtime. If you do want to externalize this module explicitly add it to `build.rollupOptions.external` at viteLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46363:15) at onRollupLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46413:5) at onLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46061:7) at file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:20803:32 at Object.logger [as onLog] (file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:22683:9) at ModuleLoader.handleInvalidResolvedId (file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:21429:26) at file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:21387:26 ERROR: "build-only" exited with 1. PS D:\MyCode\wylims-jm\lims-client>
vue3 vite打包报错: vite v6.3.6 building for production... ✓ 1646 modules transformed. ✗ Build failed in 13.09s error during build: [vite]: Rollup failed to resolve import "node_modules/axios/index.cjs" from "D:/MyCode/wylims-jm/lims-client/src/views/capital/CapitalAllocate.vue?vue&type=script&setup=true&lang.ts". This is most likely unintended because it can break your application at runtime. If you do want to externalize this module explicitly add it to `build.rollupOptions.external` at viteLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46363:15) at onRollupLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46413:5) at onLog (file:///D:/MyCode/wylims-jm/lims-client/node_modules/vite/dist/node/chunks/dep-Bu492Fnd.js:46061:7) at file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:20803:32 at Object.logger [as onLog] (file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:22683:9) at ModuleLoader.handleInvalidResolvedId (file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:21429:26) at file:///D:/MyCode/wylims-jm/lims-client/node_modules/rollup/dist/es/shared/node-entry.js:21387:26 ERROR: "build-only" exited with 1. PS D:\MyCode\wylims-jm\lims-client>你在打包时遇到的错误是因为在CapitalAllocate.vue文件中,有一行导入语句使用了错误的路径:
ts
import ... from 'node_modules/axios/index.cjs'
Vite / Rollup 无法解析这个路径,因为正确的导入方式应该使用包名,而不是指向node_modules内部的物理文件路径。
解决方案
1. 修改错误的导入语句(推荐)
打开src/views/capital/CapitalAllocate.vue,找到类似下面的代码:
ts
// ❌ 错误写法 import axios from 'node_modules/axios/index.cjs' // 或 import * as axios from 'node_modules/axios/index.cjs'
改为:
ts
// ✅ 正确写法 import axios from 'axios'
如果你的代码中使用了其他 axios 相关的具名导入,也一并改为标准方式:
ts
import axios, { AxiosInstance, AxiosResponse } from 'axios'2. 确认 axios 已安装
在项目根目录执行:
bash
npm install axios # 或 yarn add axios
3. 清理缓存并重新打包
bash
# 删除 node_modules/.vite 缓存 rm -rf node_modules/.vite # 重新打包 npm run build
如果你确实需要导入.cjs文件(不推荐)
某些特殊场景下(如使用 CommonJS 版本的 axios),你可以通过 Vite 配置来允许这种导入,但不推荐,因为会破坏 ES 模块的最佳实践。
如果坚持这样做,可以修改vite.config.ts:
ts
import { defineConfig } from 'vite' export default defineConfig({ build: { rollupOptions: { external: ['node_modules/axios/index.cjs'] // 告诉 Rollup 不要解析它 } }, // 同时需要为开发服务器添加别名 resolve: { alias: { 'node_modules/axios/index.cjs': 'axios' } } })但这样只是绕过了错误,并没有真正解决问题,依然可能导致运行时错误。强烈建议使用第一种方案,改正导入语句。
补充:为什么会出现这种错误?
可能是有人手动复制了物理路径,或者某些自动导入工具生成了错误的路径。
Vite 在处理
node_modules中的文件时,期望通过包名(如'axios')来解析,而不是直接写文件系统路径。
