Как отлаживать использование сценариев запуска npm из VSCode?
Ранее я использовал gulp и запускал gulp, чтобы запустить приложение и слушателей из отладчика кода Visual Studio, но в последнее время нужно было переключиться на запущенные скрипты через npm. К сожалению, мне не удалось выполнить VSCode, чтобы иметь возможность запускать сценарии npm через отладчик, поэтому мне пришлось прибегнуть к запуску node, чтобы запустить мой сервер напрямую, что избавит меня от задач моего слушателя, которые автоматически перезагружают код.
Это похоже на то, что должно быть простым, но до сих пор мне не повезло. Ниже приведен фрагмент моего файла launch.json, который я попытался использовать, но npm не удалось найти.
{
...
"program": "npm",
"args": [
"run",
"debug"
],
...
}
Это дает мне следующую ошибку.
Ошибка "запуск": программа "c:\myproject\npm" не существует
Связанные ресурсы:
Ответы
Ответ 1
-
Настройте новую цель отладки в вашем .vscode/launch.json:
{
"name": "Attach To npm",
"type": "node",
"request": "attach",
"port": 5858,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"outDir": null,
"localRoot": "${workspaceRoot}",
"remoteRoot": null
}
-
Конфигурируйте свой npm для запуска node с опцией -debug-brk:
"scripts": {
"start": "node app.js",
"debug": "node --debug-brk app.js"
...
-
Запустите приложение из оболочки как:
$npm run debug
-
Программа по умолчанию будет ждать в порту 5858 для присоединения отладчика
-
Итак, запустите отладчик в коде визуальной студии ( "Прикрепить к npm" ).
-
Наслаждайтесь отладчиком:)
Ответ 2
Похоже, что VS Code будет поддерживать сценарии npm и другие сценарии запуска в выпуске с октября 2016 года.
Ниже приведен пример, который был предложен на GitHub.
packages.json
"scripts": {
"debug": "node --nolazy --debug-brk=5858 myProgram.js"
},
Конфигурация запуска vscode
{
"name": "Launch via NPM",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script", "debug"
],
"port": 5858
}
Ответ 3
Я попробовал решения, предоставленные GutiMac и Jpierson, но по некоторым причинам мне не удалось заставить отладчик работать с любым из них.
Альтернативное решение, которое отлично сработало для меня (Ubuntu 16, node 8.9.1, VS 1.8.1) - использовать эту простую панель запуска приложений (которая будет добавлена в массив конфигурации VS launch.json):
{
"type": "node",
"request": "launch",
"name": "Launch Node App",
"program": "${workspaceFolder}/my-app/my-npm-start-script-dir/index.js"
}
Ответ 4
Скрипты NPM и gulp на самом деле не предназначены для запуска вашего приложения, а для выполнения таких задач, как компиляция. Если это приложение node, я бы порекомендовал вам настроить ваш launch.json таким образом без npm. Если у вас есть сложные слушатели или диспетчеры процессов, такие как PM2, вместо этого запустите приложение вручную из диспетчера процессов, а затем используйте конфигурацию Attach.
Для задач npm вы можете указать tasks.json с "command": "npm"
и "args": ["run"]
.