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

时间:2015-04-27 15:44:57

标签: 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?

3 个答案:

答案 0 :(得分:40)

你几乎就在那里,使用node_args代替args

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

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

PM2 json schema

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

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

答案 1 :(得分:2)

[pm2版本3.2.2]

如果要在PM2上附加Vscode,以下方法将起作用。

在生态系统文件ecosystem.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的性质,最好不使用特定端口。

希望这会有所帮助。

答案 2 :(得分:0)

另一种方法是

(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a

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