vue代码打包内存溢出 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

时间:2022-01-17
本文章向大家介绍vue代码打包内存溢出 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory,主要包括vue代码打包内存溢出 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我的环境: win10环境 node.js版本 12+ 内存16G
今天系统升级时通过运行npm run build:prod命令(或npm run build)打包时一直报错:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
因为我是从后台刚转到前端,虽然知道是内存溢出要把内存配置改大点,从网上搜的答案还是踩坑了:

  • 删除 C:\Users{账户}\下的.npmrc文件 我删了,没看出有啥变化,依然报错(重启了,清缓存了)

  • 全局安装 increase-memory-limit插件
    这个安装上以后运行打包命令直接报错了,报错信息为
    '"node --max-old-space-size=10240"'不是内部或外部命令,也不是可运行的程序
    这里不是内存设置太大,而是因为win10系统命令行中不能正确识别双引号"",因此还要把这个插件包中涉及到的脚本中双引号都去掉,即修改node_modules下的.bin文件中的所有.cmd文件,将里面的"%_prog%" 去掉双引号 改成 %_prog%
    项目中依赖的模块那么多,就算可以批量替换,但代码改动越多,风险越大,想想太麻烦了,所以再想想办法吧!

  • 修改package.json文件中build命令处
    "build": "node --max_old_space_size=4096 build/build.js"
    我的项目使用vue-cli搭建的,不是引用上述build/build.js这种写法,而是下面写法:
    "build:prod": "vue-cli-service build"

最终针对我的有效方案,上面那行代码改为:
"build:prod": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js build"

原文地址:https://www.cnblogs.com/fishmeng/p/15814808.html