Vue CLI执行npm run build构建长时间无响应,求排查解决指导
排查方向
- 首先打印构建详细日志定位卡住的具体环节
执行带verbose参数的构建命令:vue-cli-service build --verbose,查看日志最后停留的步骤,确认是依赖解析、代码压缩、资源处理还是其他环节导致的阻塞。你当前配置中的devServer字段仅作用于开发环境,和生产构建卡住的问题无关。 - 排查Node.js内存溢出问题
引入Vuetify等大体积依赖后,生产构建时的tree shaking、代码压缩逻辑会占用大量内存,Node默认的内存上限不足以支撑时就会出现无响应卡住的情况。可以修改package.json中的build命令,调高Node内存上限:
上述配置给Node分配4G运行内存,若项目体积较大可继续调高数值。"scripts": { "build": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js build" } - 排查依赖与资源引入问题
- 检查是否全量引入了Vuetify而未做按需引入,全量引入会大幅提升构建耗时
- 删除
node_modules文件夹、package-lock.json文件后重新执行npm install,排除依赖版本冲突的问题 - 检查项目中是否存在未做压缩的大体积静态资源(超过10M的图片、视频等)直接被打包进产物
- 临时禁用压缩和SourceMap排查插件问题
修改vue.config.js配置,临时关闭生产环境SourceMap和代码压缩,测试是否能正常完成构建:
若修改后可以正常构建,说明是代码压缩插件(terser)导致的卡住,可升级terser插件版本或者调整压缩规则解决。const path = require('path'); module.exports = { devServer: { writeToDisk: true, }, productionSourceMap: false, configureWebpack: { optimization: { minimize: false } } } - 排查代码逻辑问题
确认是否存在只有生产环境才会触发的无限递归、死循环代码,或者循环引用的依赖导入逻辑。
内容的提问来源于stack exchange,提问作者jelly5798
相关产品推荐
相关产品推荐

