使用pm2运行的调试应用程序

Naw*_*awa 24 pm2

应用程序运行

pm2 start app.js
Run Code Online (Sandbox Code Playgroud)

要么

pm2 start config.json
Run Code Online (Sandbox Code Playgroud)

我想使用node_inspector在本地调试我的应用程序.我加debug的说法

pm2 start --node-args="--debug=7000" app.js
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我提供config.json而不是脚本,app.js我不知道如何传递有关调试的参数.下一个配置不起作用

{
  "apps": [
    {
      "name": "myName",
      "script": "app.js",
      "args": "['--debug=7000']"
      ............
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

那么如何调试由pm2运行并使用config的应用程序?

soy*_*uka 41

你快到了,用node_args而不是args:

PM2 json架构.

如果此后仍有人遇到调试设置问题,则在某些情况下,您必须禁用群集模式才能使调试设置生效.

另请注意,如果将所有args作为单个字符串传递,则不需要node_args值中的括号.

  • 如果有人在此之后仍然遇到调试设置问题,在我的情况下,我必须禁用集群模式以使调试设置生效.另请注意,如果将所有args作为单个字符串传递,则不需要node_args值中的括号. (4认同)
  • @Herick非常感谢你.是的确实我必须将exec_mode切换为"fork",否则它正在使用它自己的端口.更新:现在nodejs使用inspect cmd选项.那么命令应该是"--inspect = 9090"等. (4认同)

小智 7

[pm2 版本 3.2.2]

如果您想将 Vscode 与 PM2 连接,以下方法将起作用。

在生态系统文件生态系统.config.js中,在apps下添加以下行。

node_args : ["--inspect"]

添加它会在调用脚本时自动设置两个节点参数。他们是--inspect--inspect-port=9232

他们可以看到 console.log(process.process.execArgv)

此外,如果实例数 > 1,则上述参数将为此 pm2 下的每个其他节点实例不断增加此端口号。

例如,对于第二个节点实例 pm2 将通过--inspect, --inspect-port=9233

如果您明确将检查端口设置为一个值,我会将以下内容视为 args --inspect, --inspect-port=9200,--inspect-port=9230

它似乎没有使用您想要的端口。但我认为鉴于 pm2 的性质,不使用特定端口可能会更好。

希望这可以帮助。


Sem*_*yon 7

另一种方法是

env: {
    NODE_OPTIONS: '--inspect'
}
Run Code Online (Sandbox Code Playgroud)

在您的 Ecosystem.config.js 文件中。