web-dev-qa-db-ja.com

pm2を使用して実行されるデバッグアプリケーション

アプリケーションの実行者

pm2 start app.js

または

pm2 start config.json

Node_inspectorを使用してローカルでアプリケーションをデバッグしたい。 debug引数を追加しました

pm2 start --node-args="--debug=7000" app.js

正常に動作しますが、config.jsonスクリプトの代わりにapp.jsデバッグに関する引数を渡す方法がわかりません。次の設定が機能しない

{
  "apps": [
    {
      "name": "myName",
      "script": "app.js",
      "args": "['--debug=7000']"
      ............
      }
    ]
}

Pm2で実行され、configを使用するアプリケーションをデバッグするにはどうすればよいですか?

23
Nawa

もうすぐそこにいるので、node_argsの代わりにargs

  • argsはスクリプトの引数です
  • node_argsは、実行可能ノードに渡される引数です

    {
      "name": "myName",
      "script": "app.js",
      "node_args": ["--debug=7000"]
    }
    

PM2 jsonスキーマ

この後、誰かがまだデバッグ設定に問題がある場合、場合によっては、デバッグ設定を有効にするためにクラスターモードを無効にする必要があります。

また、すべての引数を単一の文字列として渡す場合、node_args値に角括弧が必要ないことに注意してください。

40
soyuka

[pm2バージョン3.2.2]

PM2にVscodeを添付する場合、次のようになります。

Ecosystem.config.jsであるエコシステムファイルで、appsの下に次の行を追加します。

_node_args : ["--inspect"]_

これを追加すると、スクリプトの呼び出し中に2つのノード引数が自動的に設定されます。それらは_--inspect_、_--inspect-port=9232_です。

それらはconsole.log(process.process.execArgv)で見ることができます

また、インスタンスの数が1より大きい場合、上記の引数は、このpm2の下にある他のノードインスタンスごとにこのポート番号を増分し続けます。

たとえば、2番目のノードの場合、pm2は_--inspect_、_--inspect-port=9233_を渡します。

Inspect-portを明示的に値に設定した場合、次のような引数が表示されます_--inspect_、_--inspect-port=9200_、_--inspect-port=9230_

そして、それはあなたが望んでいたポートを使用していないようです。しかし、特定のポートを使用しない方がpm2の性質を考えると良いと思います。

お役に立てれば。

それを行う別の方法は

env: {
    NODE_OPTIONS: '--inspect'
}

ecosystem.config.jsファイルで。

0
Semyon Fomin