如何将调试参数从 pm2 传递到使用 Coffeescript 解释器的节点进程?

How to pass the debug argument from pm2 to a node process that uses a Coffeescript interpreter?

以下命令未按预期运行。调试参数未到达节点进程:

pm2 startOrRestart server.json --node-args="--debug=7001"

server.json 文件:

{
  "apps" : [
    {
      "name"             : "web",
      "cwd"              : "/home/app/",
      "instances"        : 1,
      "cron_restart"     : "*/30 * * * *",
      "script"           : "web/server.coffee",
      "exec_interpreter" : "coffee",
      "error_file"       : "logs/web-err.log",
      "out_file"         : "logs/web-out.log"
    }
  ]
}

但是pm2启动的节点进程没有debug参数。

22:10   0:05 node /home/app/web/server.coffee

我怀疑这与我使用的 Coffeescript 解释器有关。例如,如果我直接 运行 Coffee 命令(绕过 pm2),我可以使事情按预期工作,它按预期以调试模式启动节点进程:

coffee --nodejs --debug=5000 /home/app/web/server.coffee

如何正确地将 debug 参数从 pm2 传递到 coffee 到 node,以便它一直传递到 node 进程?

问题可以通过在 --node-args 选项值中添加 '--nodejs' 来解决,例如

pm2 startOrRestart server.json --node-args="--nodejs --debug=7001"

如果解释器指定为'coffee',那么将在内部使用 coffee 二进制文件(或 coffee-script npm 包)。所以我们必须相应地给 --node-args 选项值。