【发布时间】:2019-12-17 03:51:40
【问题描述】:
从上周开始,我大部分时间都在生产中,我收到FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory。
我尝试增加 HEAP 大小,但没有奏效。由于它发生在生产中,所以无法继续使用它,它下降了一段时间。我在 Laravel 应用程序中使用 Vuejs 和 .less。
我在 package.json 中的脚本如下所示:
"scripts": {
"start": "npm run watch",
"dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
NPM 版本为4.6.1
NODE版本为8.16
我在开发中没有遇到此错误,但我在开发和生产中尝试了一些解决方案。
我尝试添加一个 npm 包
`npm install -g increase-memory-limit`
然后
`increase-memory-limit`
但是当我执行npm run dev 或npm run watch 时,模块没有编译。进程卡了很久,什么也没发生。
我还尝试在生产中添加以下脚本:
"scripts": {
"fix-memory-limit": "cross-env LIMIT=2048 increase-memory-limit"
},
"devDependencies": {
"increase-memory-limit": "^1.0.3",
"cross-env": "^5.0.5"
}
但它也没有奏效。包坏了,最后不得不删除代码。
我还尝试在 dev 中使用以下脚本:
"dev": "cross-env NODE_OPTIONS=\"--max-old-space-size=4096\" NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
我没有收到任何错误,但我不确定它是否可以在生产中工作。这是正确的做法吗?
或类似的东西:
npm run dev NODE_OPTIONS="--max-old-space-size=4096"
不能在生产中冒险,已经失败了 2、3 次。
有人可以建议更好的方法吗?我如何检查 HEAP 大小是否增加。
【问题讨论】:
-
这发生在我身上一次,应该归咎于一个过时的包。您的所有软件包都是最新的吗?