likes
comments
collection
share

React16 编译报错"node内存溢出"的解决方案

作者站长头像
站长
· 阅读数 118

在版本16的React项目中使用npm run build打包时,遇到node内存溢出问题。

需要将百度的amis低代码库的编辑器功能嵌入现有项目中,将 amis-editor 打包时发现报错,一直跑不起来,网上找了几个项目对比,react版本多是16,使用react脚手架默认搭建的项目是最新版本。于是手动降到16,打包时又遇到了新的问题。

报错截图如下: React16 编译报错"node内存溢出"的解决方案

网上查找到的解决方案:

方案一:

安装increase-memory-limit插件,扩大node的内存限制
安装:
npm install -g increase-memory-limit

执行:
increase-memory-limit 或 increase-memory-limit --max-old-space-size=8192 

但是,这个解决方案在我的项目里面并没有用,可能是我的系统上内存限制过低,具体原因暂不清楚

方案二:

通过package.json加大内存,在启动node
node --max-old-space-size=8192 path/to/your/build/script

"path/to/your/build/script" 是你的应用的构建脚本的路径。同方案一,这个项目中依然不起作用

方案三:

在nodejs 根目录下建一个node.cmd文件 里面写上 node2.exe --max-old-space-size=8192 %*
大概意思就是本来调用node.exe的时候被node.cmd劫持,强制分配最大内存为8192MB ,然后再调用node.exe。 

这种改法,一般人真想不到,但我觉得大同小异吧,对于这个项目也确实没起作用

方案四:√

根目录新建.env文件,用于存储环境变量,在 ".env" 文件中配置 "GENERATE_SOURCEMAP=false"

React16 编译报错"node内存溢出"的解决方案

在 ".env" 文件中配置 "GENERATE_SOURCEMAP=false" 时,意味着禁用源映射。源映射是一种用于调试 JavaScript 代码的技术,它可以将压缩后的 JavaScript 代码映射回原始的未压缩代码。这样,当你在调试压缩后的 JavaScript 代码时,就可以在调试器中看到未压缩的代码,而不是压缩后的代码。

配置 "GENERATE_SOURCEMAP=false",表示你希望在打包过程中生成源映射。这通常是因为希望节省打包时间,或者希望减小打包后的文件大小。

转载自:https://juejin.cn/post/7178026291679985724
评论
请登录