"Отказано в подключении" в настройке отладки в WebStorm NPM
Принимая во внимание, что у меня есть только самое слабое понимание того, что действительно делает отладчик, мне нужна помощь в настройке конфигурации отладки WebStorm npm для приложения express.js
.
Здесь я до сих пор... Я нажимаю debug с моими настройками, поскольку я думаю, что они должны быть (ниже):
/Users/me/.nvm/versions/node/v4.4.1/bin/node --debug=8090
/Users/me/.nvm/versions/node/v4.4.1/lib/node_modules/npm/bin/npm-cli.js run-script start
To debug "start" script, make sure $NODE_DEBUG_OPTION string is specified as the first argument for node command you'd like to debug.
For example:
{ "start": "node $NODE_DEBUG_OPTION server.js" }
Debugger listening on port 8090
...
It has begun. Port: 3000
Итак, на этом этапе приложение запустилось и отвечает на мой POST
на localhost:3000
, но не прерывает точку останова, которую я установил.
Глядя в панель "Отладчик" > "Переменные", я вижу Connecting to localhost:57617
, затем всплывает всплывающая подсказка, в которой говорится: "Соединение отказано", а панель говорит Frame is not available
.
Я не понимаю, откуда этот номер порта 57617. Он варьируется, хотя и не по какому-либо шаблону, который я еще обнаружил, за исключением того, что он всегда отличается от того, который я установил в опции --debug=X
или --debug-brk=X
node.
Ответы
Ответ 1
Сообщение об ошибке действительно очень неясно. Вам нужно настроить запись npm script в package.json
(к сожалению). Найдено четкое описание в этом сообщении в блоге: http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/
Ваша запись start
должна выглядеть следующим образом:
"scripts": {
"start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
Вы также можете использовать две записи, чтобы сохранить первый DRY. Хотя это не обязательно, так как оба из них просто отлично работают из командной строки. Так что для полноты:
"scripts": {
"start": "someModule --arguments",
"startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
Я не считаю этот метод особенно чистым, и это то, что должен сделать для вас отладчик npm без необходимости манипулировать исходным кодом. Но это единственный способ (на данный момент).
Ответ 2
Я никогда не нуждался в этом в предыдущих версиях Node или Webstorm. Не уверен, что изменилось, требуя эту опцию сейчас.
Мне пришлось добавить его в package.json
, хотя его добавление в конфигурацию запуска не работает. И мне пришлось сделать отдельный script, потому что он сломался при запуске любого script без отладки.
Здесь my package.json(Обратите внимание на переменные стиля Windows% VAR%, используйте $VAR для Unix-подобных систем):
"scripts": {
"start": "node index.js",
"debug": "node %NODE_DEBUG_OPTION% index.js",
},
Затем, когда я хочу отлаживать, я использую конфигурацию запуска, которая вызывает параметр отладки, потому что в Windows по крайней мере Node принимает букву буквально, когда она не заменяется.
Если вы попытаетесь ввести переменную в Webstorm (2016.3.3), запустите диалог конфигурации:
![Конфигурация запуска Webstorm]()
Это приводит к этим фактическим командам, которые являются неправильными:
Как аргумент script:
"C:\...\runnerw.exe" "C:\...\node.exe" "C:\...\npm-cli.js" run start %NODE_DEBUG_OPTION%
Как вариант Node:
"C:\...\runnerw.exe" "C:\...\node.exe" %NODE_DEBUG_OPTION% "C:\...\npm-cli.js" run start
Но параметры, похоже, должны быть переданы в NPM, а не в npm script (прежний), а не Node (последний), и нет никакого способа сделать это в диалоговом окне, насколько я знаю, Таким образом, добавление в команду package.json script.