web-dev-qa-db-ja.com

ノードv8引数とスクリプト引数をpm2に渡す方法は?

以下のアプリをpm2で起動できるようにする必要がありますが、pm2で起動する方法がわかりません。

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

--node-argsについては知っていますが、-expose-gc専用だと思います。

19
Harold Finch

少し掘り下げた後、私が探していたのは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から取得するすべてのscrips引数は、二重ダッシュの後に配置する必要があります。

将来的には、リンク--script-args = "arg1 arg2 arg3"を実装することを期待しています。 Linuxの専門家ではない人にとっては、とてもいいでしょう。

22
Harold Finch

別の方法は、argsキーを指定するアプリケーション宣言jsonファイルを作成することです。 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
19
psulek

-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

2

私はpm2のprocess.jsでgcを公開する必要があったので、次のようにしました。

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