npm и nodemon узла отладки vscode

Node.js внешний интерфейс Debug NPM

Смотрите блог для более связанного контентаGitHub.com/dedicated мойка…

Есть много способов отладки nodejs, вы можете прочитать эту статьюHow to Debug Node.js with the Best Tools Available, среди которых мне больше всего нравится использовать V8 Inspector и vscode.

В vscode нажмите кнопку этого паука

Вы можете увидеть боковую панель, где появляется отладка, а затем добавить конфигурацию

Выберите среду

Вы можете увидеть файл launch.json.

При запуске выберите соответствующую конфигурацию, затем щелкните зеленый треугольник, указывающий вправо

режим запуска и режим подключения

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceRoot}/index.js"
    },
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to Port",
      "address": "localhost",
      "port": 5858
    }
  ]
}

когдаrequestКогда он запущен, это режим запуска.Это программа, запущенная из vscode.Если это отладка, она всегда будет в режиме отладки. Режим подключения предназначен для подключения к запущенной службе. Например, если вы запустили проект снаружи и вдруг возникла необходимость отладки, вам не нужно закрывать уже запущенный проект и перезапускать его в vscode, пока вы запускаете его в режиме присоединения, vscode может подключиться к сервису, который уже начато. Когда отладка окончена, просто отключите соединение, что заведомо удобнее запуска.

Начните с npm в отладке

Много раз мы пишем длинные команды запуска и конфигурации вpackage.jsonизscriptsв, например

"scripts": {
  "start": "NODE_ENV=production PORT=8080 babel-node ./bin/www",
  "dev": "nodemon --inspect --exec babel-node --presets env ./bin/www"
},

Мы хотим, чтобы vscode использовал npm для запуска и отладки, что требует следующей конфигурации:

{
  "name": "Launch via NPM",
  "type": "node",
  "request": "launch",
  "runtimeExecutable": "npm",
  "runtimeArgs": [
    "run-script", "dev"	//这里的dev就对应package.json中的scripts中的dev
  ],
    "port": 9229	//这个端口是调试的端口,不是项目启动的端口
},

Начните с nodemon в отладке

Просто используйте npm для запуска, хотя вdevВ команде используется Nodemon, и программу можно нормально перезапустить, но после перезапуска отключается отладка. Поэтому вам нужно разрешить vscode использовать nodemon для запуска проекта.

{
  "type": "node",
  "request": "launch",
  "name": "nodemon",
  "runtimeExecutable": "nodemon",
  "args": ["${workspaceRoot}/bin/www"],
  "restart": true,
  "protocol": "inspector",	//相当于--inspect了
  "sourceMaps": true,
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen",
  "runtimeArgs": [	//对应nodemon --inspect之后除了启动文件之外的其他配置
    "--exec",
    "babel-node",
    "--presets",
    "env"
  ]
},

Обратите внимание здесьruntimeArgs, если эти конфигурации записаны наpackage.jsonНа словах это так

nodemon --inspect --exec babel-node --presets env ./bin/www

Это очень удобно, проект можно нормально перезапустить, а функция отладки будет включаться при каждом перезапуске.

Однако что, если мы не хотим постоянно включать функцию отладки?

Это требует использования режима подключения, упомянутого выше.

Используйте следующую команду для нормального запуска проекта

nodemon --inspect --exec babel-node --presets env ./bin/www

Когда мы хотим выполнить отладку, запустите следующую конфигурацию в отладке vscode.

{
  "type": "node",
  "request": "attach",
  "name": "Attach to node",
  "restart": true,
  "port": 9229
}

Идеально!

использованная литература

я на гитхабеGitHub.com/dedicated мойка…