How to solve FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memor on Typescript 'npm run build'?

How to solve FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memor on Typescript 'npm run build'?

如何解决:致命错误:堆限制附近的标记压缩无效分配失败 - JavaScript 堆内存不足 1: 0xa08900 node::Abort() [/root/.nvm/versions/node/v12.18.1/bin/node] when 运行 npm run build on TypeScript project.

我一直在尝试通过我在 Whosebug 和其他论坛上的研究得到的修复,但我没有成功。我从 Node.js 版本 10 更新到版本 12.18.1,但问题仍然存在。我试图创建一个 SWAP 文件,但我没有成功。以前,问题会通过重新创建 SWAP 文件而消失。我正在使用 Digital Ocean Ubuntu 服务器 20.4。请协助我解决这些问题

听起来您需要允许更大的堆大小(默认情况下是根据可用系统内存自动计算的——交换文件不算在内)。

你需要的标志是 --max-old-space-size(值以兆字节为单位),apparently 一种设置它的方法是 运行 npm,如下所示:

node --max_old_space_size=4000 /usr/bin/npm run build

或者您可以根据需要使用 NODE_OPTIONS.npmrc

如果这没有帮助,或者您需要更多帮助,请提供更多信息:

  • 你的服务器有多少内存?
  • 发生内存不足错误时消耗了多少内存?
  • 是否有其他人可以重现该问题,或者它是否涉及专有软件?你能创建一个 public 重现案例吗?

I updated from Node.js version 10 to version 12.18.1

可能与您的问题无关,但这仍然是一个相当旧的版本。 12.20.0(如果它必须是处于维护模式的 v12 系列)或 14.15.1(当前的“活动 LTS”)怎么样?

/root/.nvm/...

为什么你 运行 节点作为 root??!! 永远不要 运行 任何东西 作为 root!

增加节点最大内存大小

// terminal
export NODE_OPTIONS=--max_old_space_size=8096

// Windows
set NODE_OPTIONS=--max_old_space_size=8096