36

应用程序由

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 运行并使用配置的应用程序?

4

3 回答 3

50

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

  • args是你的脚本参数
  • node_args是传递给节点可执行文件的参数

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

PM2 json 架构

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

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

于 2015-04-27T15:49:23.293 回答
8

[pm2 版本 3.2.2]

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

在生态系统文件生态系统.config.js 中,在应用程序下添加以下行。

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 的性质,不使用特定端口可能会更好。

希望这可以帮助。

于 2018-10-17T22:24:19.833 回答
5

另一种方法是

env: {
    NODE_OPTIONS: '--inspect'
}

在您的生态系统.config.js 文件中。

或在您的 pm2.yml

apps:
- script: ./server.js
  env:
    DEBUG: express:*
  node_args: "--inspect=3500"
于 2019-06-14T01:31:01.067 回答