如何将节点v8 args和脚本args传递给pm2?

时间:2014-12-29 14:46:57

标签: node.js production pm2

我需要能够使用pm2启动下面的应用程序,但不知道如何使用pm2启动它。

node --expose-gc bin/www arg1 arg2 arg3

我知道--node-args,但我认为仅适用于--expose-gc。

4 个答案:

答案 0 :(得分:22)

经过一番挖掘后,我发现我所寻找的是linux上的双击。

正常代码,

node --expose-gc bin/www arg1 arg2 arg3

使用pm2的相同代码

pm2 start bin/www --node-args="--expose-gc" -- arg1 arg2 arg3

你必须在--node-args内放入所有v8参数,并且必须在双击之后从process.argv抓取所有的dats参数。

我希望将来他们实现一些链接--script-args =" arg1 arg2 arg3"。对那些不是Linux专家的人来说非常好。

答案 1 :(得分:18)

另一种方法是创建应用程序声明json文件,您可以在其中指定args键。查看PM2网站上的documentation

pm2.json文件的示例:

{
  "apps" : [{
    "name"        : "appname",
    "script"      : "app.js",
    "args"        : ["-s", "123"],
    "node_args"   : "--harmony",
    "merge_logs"  : true,
    "cwd"         : "/this/is/a/path/to/start/script",
    "env": {
        "NODE_ENV": "production"
    }
  }]
}

按如下方式运行:

$ pm2 start pm2.json

答案 2 :(得分:2)

您可以在-x --

之后添加任何自定义参数
  

pm2 start app.js -x -- --prod

和节点参数为--node-args="--harmony"

  

pm2 start app.js --node-args="--harmony"

<强>两个

  

pm2 start app.js --node-args="--harmony" -x -- --prod

答案 3 :(得分:1)

我必须在pm2 process.js中暴露-cc,所以我做了以下操作:

{
  "apps" : [
    {
      "name"        : "app",
      "script"      : "bin/www",
      "instances"   : 2,
      "exec_mode"   : "cluster",
      "watch"       : false,
      "node_args"   : "--expose-gc",
      "env"         : {"NODE_ENV": "development"}
    }
  ]
}