严重错误:在堆限制附近无效的标记压缩导致分配失败 - Ionic 3中的JavaScript堆内存不足

563

当我使用ionic serve命令运行Ionic 3项目时,我遇到了这个错误:

JavaScript致命错误:在堆限制附近无效的标记-压缩分配失败


请查看此答案:https://dev59.com/zlkT5IYBdhLWcg3wefQn#66914674 - sidverma
46个回答

4
对我来说,这是一个Firebase包的问题。
只需在您的package.json文件中添加"@firebase/database": "0.2.1"。重新安装node_modules,然后它就可以工作了。

a Firebase package 还是 the Firebase package - Peter Mortensen

3

我删除了现有的Node.js模块,并运行了以下命令来解决我的问题:

npm install -all
npm audit fix

3

对我而言,问题出在多了一个node_modules文件夹,我把它重命名为node_modules_old并运行了npm install以生成一个新的node_modules。不知何故,构建过程仍在使用node_modules_old文件夹,所以我把node_modules_old移出该目录以解决问题。


1
这是我的问题。之前测试不同的软件包时,有一个名为node_modules.old的文件夹。 - user995551

3
升级React和React Native库后出现了这个问题。
解决方法:
rm -rf node_modules **/node_modules && rm -rf yarn.lock **/yarn.lock && yarn cache clean && yarn install

对我来说,运行yarn cache clean就解决了问题。 - PHZ.fi-Pharazon

2

只需运行此命令:

export NODE_OPTIONS="--max-old-space-size=8192"

2
请检查您的Node.js版本:

   node -v

如果版本号是10.1.1或更高,那么您需要通过以下命令更新根目录下的Node.js版本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

source ~/.nvm/nvm.sh

nvm ls

nvm install 12.18.1

完成后,请重新启动您的终端或Visual Studio。

它可以100%正常工作。

对于Ionic用户,请在您的package.json中添加以下代码:

For Ionic user

 "ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",


实际上,如果你通过“app-scripts”构建Web应用程序,那么这个方法是可行的。但是,如果你想要构建Android或者像“Ionic Cordova Build Android”这样的脚本,怎么办呢? - Muhammed Moussa

2

另一个与Angular无关的解决方案(我在使用AWS Amplify构建React应用程序时遇到了同样的问题)。

正如Emmanuel所提到的,这似乎源于Node.js v10与Node.js v12处理内存的方式不同。

我尝试增加内存,但没有成功。但是使用Node.js v12就可以了。

请查看如何将nvm use $VERSION_NODE_12添加到您的构建设置中,如richard所解释的

frontend:
  phases:
    preBuild:
      commands:
        - nvm use $VERSION_NODE_12
        - npm ci
    build:
      commands:
        - nvm use $VERSION_NODE_12
        - node -v
        - npm run-script build

1
我正在使用最新稳定版的Node.js v-14.17。在创建新的Angular Ionic项目时,我遇到了相同的问题,并尝试了之前的大部分解决方法,但都没有成功。

最终,升级到Node.js 16.4.2 LTS后,问题得到了解决。


Azure DevOps - 将 Node.js 版本从 10 升级到 12 后,已解决了管道错误。 - Karan

1

如果你在Windows上进行开发并在发布时遇到此问题,请通过官方网站升级Node.js。

随着每个新版本的Node.js,内存使用处理确实会增加,尽管我没有找到确切的数字来说明增加量是多少。

这是唯一对我有效的解决方案。花费了我整整一个周末甚至更长时间来解决这个问题。


1
我猜有很多种方法可以导致这个错误!在我的情况下,我的package.json文件中有一个循环。项目A依赖于项目B,而项目B又依赖于项目A。

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