node.js - 如何在 Typescript/Webpack 的 Bitbucket 管道中增加 NodeJS 堆(--max-old-space-size)?

标签 node.js typescript serverless-framework bitbucket-pipelines

我在无服务器/TypeScript 项目的 webpack 打包步骤中遇到了内存问题。

我试过:

  • 'increase-memory-limit' npm 包无效
  • 从 npm run 脚本调用以下命令

  • 通过bitbucket-pipelines.yml 直接调用以下命令。

    node --max-old-space-size=4096 ./node_modules/.bin/serverless deploy
    

使用此命令在本地运行良好,但在 Bitbucket 管道中我得到以下输出:

    Serverless: Bundling with Webpack...

    internal/child_process.js:323
        throw errnoException(err, 'spawn');
        ^
    Error: spawn ENOMEM
        at _errnoException (util.js:1022:11)
        at ChildProcess.spawn (internal/child_process.js:323:11)
        at exports.spawn (child_process.js:502:9)
        at Object.exports.fork (child_process.js:103:10)
        at fork (/opt/atlassian/pipelines/agent/build/node_modules/worker-farm/lib/fork.js:17:36)
        at Farm.startChild (/opt/atlassian/pipelines/agent/build/node_modules/worker-farm/lib/farm.js:106:16)
        at Farm.processQueue (/opt/atlassian/pipelines/agent/build/node_modules/worker-farm/lib/farm.js:279:10)
        at Farm.<anonymous> (/opt/atlassian/pipelines/agent/build/node_modules/worker-farm/lib/farm.js:97:21)
        at ontimeout (timers.js:475:11)
        at tryOnTimeout (timers.js:310:5)
        at Timer.listOnTimeout (timers.js:270:5)
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! platform-state-machine-import@0.0.2 deploy: `node --max-old-space-size=4096 ./node_modules/.bin/serverless deploy "--stage"    "feattsify" "--region" "us-east-1"`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the platform-state-machine-import@0.0.2 deploy script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /root/.npm/_logs/2019-02-07T22_37_25_150Z-debug.log

我在这里进行了大量的谷歌搜索,试图找出 Bitbucket 是否有某种环境。您可以为运行时参数等设置的变量,但似乎找不到任何与上述 NPM 包无关的内容。

最佳答案

我前段时间在一些 Jenkins 构建任务中遇到了类似的问题。 您可以使用 NODE_OPTION 环境变量来解决它:

NODE_OPTIONS=--max_old_space_size=4096

从您的错误堆栈跟踪来看,似乎正在生成新的 Node 进程。 如果您可以设置此环境变量, Node 将使用它来将参数传递给任何新进程,从而传递给此处内存不足的派生进程。

https://nodejs.org/dist/latest-v8.x/docs/api/cli.html#cli_node_options_options

关于node.js - 如何在 Typescript/Webpack 的 Bitbucket 管道中增加 NodeJS 堆(--max-old-space-size)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594610/

相关文章:

javascript - 如何在 Node.js Express 中让我的 session 最后跨子域?

javascript - Angular 2,在表单中设置文本输入的值

javascript - 异步函数中的 Promisereject() 导致 “Uncaught (in promise)” 警告

node.js - 如何优化 AWS Lambda?

mysql - 带有 Node MySQL 的无服务器框架

javascript - 需要用 CoffeeScript 编写的 Node 模块

node.js - Node.js结果和错误处理-'TypeError : callback is not a function

javascript - 仅在 Nodejs 中需要时才从主进程启动和停止子进程

Angular 如何使用管道名称从字符串调用管道?

node.js - aws + serverless + webpack => 在产品中找不到模块 xxx