Приложение отладки, которое выполняется с использованием 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.