Подтвердить что ты не робот

"Отказано в подключении" в настройке отладки в 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.

4b9b3361

Ответ 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.