Приложение отладки, которое выполняется с использованием pm2

Приложение запускается

pm2 start app.js

или

pm2 start config.json

Я хочу отлаживать свое приложение локально с помощью node_inspector. Я добавил аргумент debug

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

Он отлично работает, но если я предоставляю config.json вместо script app.js, я не знаю, как передать аргументы об отладке. Следующая часть конфигурации не работает.

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

Итак, как отлаживать приложение, которое выполняется pm2 и с помощью config?

Ответы

Ответ 1

Вы почти у node_args, используйте node_args вместо args:

  • args - это аргументы вашего скрипта
  • node_args - это аргументы, которые передаются в исполняемый файл узла

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

Схема PM2 JSON.

Если после этого у кого-то все еще возникают проблемы с настройкой отладки, в некоторых случаях вам нужно отключить режим кластера, чтобы настройка отладки была эффективной.

Также обратите внимание, что вам не нужны скобки в значении node_args, если вы передаете все аргументы как одну строку.

Ответ 2

[pm2 версия 3.2.2]

Следующее будет работать, если вы хотите присоединить Vscode с PM2.

В файле экосистемы, который является 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, может быть, лучше не использовать определенный порт.

Надеюсь это поможет.

Ответ 3

Еще один способ сделать это будет

env: {
    NODE_OPTIONS: '--inspect'
}

в вашем файле ecosystem.config.js.