【问题标题】:How to solve FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memor on Typescript 'npm run build'?如何解决致命错误:接近堆限制的无效标记压缩分配失败-Typescript 'npm run build' 上的 JavaScript 堆内存不足?
【发布时间】:2021-03-15 08:53:19
【问题描述】:

如何解决:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 1: 0xa08900 node::Abort() [/root/.nvm/versions/node/v12.18.1/bin/node] 在 TypeScript 项目上运行 npm run build 时。

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

【问题讨论】:

    标签: node.js reactjs typescript memory-management v8


    【解决方案1】:

    增加节点最大内存大小

    // terminal
    export NODE_OPTIONS=--max_old_space_size=8096
    
    // Windows
    set NODE_OPTIONS=--max_old_space_size=8096
    

    【讨论】:

      【解决方案2】:

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

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

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

      如果您愿意,也可以使用NODE_OPTIONS.npmrc

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

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

      我从 Node.js 版本 10 更新到版本 12.18.1

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

      /root/.nvm/...

      为什么要以 root 身份运行节点??!! 永远不要以 root 身份运行 任何东西

      【讨论】:

      • 非常感谢您。我一直想知道为什么 SWAP 文件不再工作,现在我看到你说这是基于系统上的可用 RAM 的地方。我还在构建时检查了 RAM,我看到它从大约 1900MB 呈指数下降到可用的 50MB,当它低于这个值时,系统肯定会停止它。再次感谢您!
      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 2020-08-05
      • 2019-07-06
      • 2020-04-17
      • 2019-07-15
      • 2023-03-18
      • 2019-05-05
      • 2020-08-22
      相关资源
      最近更新 更多