npm - 如何在npm中设置最大的内存空间大小(max-old-space-size)

5

在构建 Angular 项目时出现以下错误:

CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

我在某处看到过配置 npm 的 max-old-space-size 可以解决这个问题。但是我不知道如何设置它。我使用的是 Windows 操作系统,在 nodejs 安装文件夹(C:\Program Files\nodejs)中有两个 npm 文件,npm 和 npm.cmd。npm.cmd 文件的第一行是“由 npm 创建,请勿手动编辑”。因此,我不应该编辑此文件,并且必须在 npm 文件中配置 max-old-space-size。但是我不知道在这个文件中要配置哪里。我的 npm 文件如下所示:

#!/bin/sh
(set -o igncr) 2>/dev/null && set -o igncr; # cygwin encoding fix

basedir=`dirname "$0"`

case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

NODE_EXE="$basedir/node.exe"
if ! [ -x "$NODE_EXE" ]; then
  NODE_EXE=node
fi

NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js"

case `uname` in
  *MINGW*)
    NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g`
    NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js"
    if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then
      NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS"
    fi
    ;;
  *CYGWIN*)
    NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g`
    NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js"
    if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then
      NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS"
    fi
    ;;
esac

"$NODE_EXE" "$NPM_CLI_JS" "$@"

希望这个对你有用 https://www.npmjs.com/package/increase-memory-limit - Sohan
你的 Node 和 npm 版本是什么? - Sohan
请查看此答案 https://stackoverflow.com/questions/52161175/ng-build-prod-error-fatal-error-call-and-retry-last-allocation-failed-jav/52161368#52161368 - Hana Wujira
@angular/cli: 1.4.10 node: 6.10.3 os: win32 x64 @angular/animations: 4.1.3 @angular/cdk: 2.0.0-beta.11 @angular/common: 4.1.3 @angular/compiler: 4.1.3 @angular/core: 4.1.3 @angular/forms: 4.1.3 @angular/http: 4.1.3 @angular/material: 2.0.0-beta.1 @angular/platform-browser: 4.1. @angular/platform-browser-dynam @angular/router: 4.1.3 @angular/cli: 1.4.10 @angular/compiler-cli: 4.1.3 @ngtools/json-schema: 1.1.0 typescript: 2.2.0 - Sinu Varghese
这个回答解决了你的问题吗?ng build --prod error : FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory - 相关问题已经被提出并且已经有一个被接受的答案。 - JBallin
2个回答

6

也许你可以尝试这个方法:

> npm run start --node-flags --max-old-space-size=512 --no-warnings

> node --max-old-space-size=250 `which npm` some_npm_command

请您详细说明一下。我需要在哪里运行这个命令? - Sinu Varghese
1
这对于临时解决方案来说很好,但必须有一种方法可以全局设置,这样我们就不必每次都给出最大旧大小。 - Pavan Skipo
2
这也可以被设置为别名,放入您的Windows配置文件或Linux的.bashrc中,如下所示: alias npm='node --max_old_space_size=8000 /usr/bin/npm' - Sohan

0

我遇到过类似的问题,但是我不得不增加 Docker 内存大小。

Docker Screenshot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接