Я пытаюсь отладить сервер узлов с помощью vscode. Я запускаю yarn start --inspect
и подключаю отладчик с этой конфигурацией к своему launch.json
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9230,
"outFiles": [
"${workspaceRoot}/build/**/*.js"
]
}
Я могу установить точку останова в build/server.js (красная точка), но не могу установить ее в src/index.js (серый кружок). Что я делаю не так с исходными картами :thinking: ?
Мне повезло с прикреплением по идентификатору процесса. Также есть параметр конфигурации запуска sourceMaps
vscode, для которого можно установить значение true.
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"restart": true
}
@ajsharp спасибо за ответ :smiley_cat:
То же, что метод присоединения. Я не могу установить точку останова в src/index.js.
Параметр sourceMaps по умолчанию имеет значение true (см. https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_source-maps).
Я решил это, используя другую настройку исходной карты, VSCode, похоже, не нравится вариант cheap-module-sourcemap
.
razzle.config.js
:
module.exports = {
modify(config, { target, dev }, webpack) {
config.devtool = dev ? 'eval-source-map' : 'none';
return config;
}
}
launch.json
:
{
"name": "Attach to dev server",
"type": "node",
"request": "attach",
"protocol": "inspector",
"address": "localhost",
"port": 9230
}
и запустите сервер с yarn start --inspect --inspect-port 9230
* отредактировано, спасибо @dguyonvarch за обнаружение ошибки.
@benhamlin :smile_cat: Отлично работает!
Я только что исправил ваш фрагмент с помощью:
module.exports = {
modify: (config, { target, dev }, webpack) => {
config.devtool = dev ? 'eval-source-map' : 'none';
return config
}
}
Я нахожу это в razzle/packages/razzle/config/createConfig.js
строке 93:
// Controversially, decide on sourcemaps.
devtool: 'cheap-module-source-map'
Так что я открываю полемику :wink: ! Почему cheap-module-source-map
, а не eval-source-map
Кто-нибудь хочет добавить в документацию раздел об этом рецепте?
@jaredpalmer Могу ли я предложить запрос на слияние с eval-source-map
? В этом случае нет необходимости обновлять документ.
Хола! Итак, вот в чем дело, между открытым исходным кодом и моей повседневной работой и жизнью, а чем-то еще, мне есть чем управлять, поэтому я использую бота GitHub, чтобы автоматизировать несколько вещей здесь и там. Этот конкретный бот GitHub пометит это как устаревшее, потому что какое-то время в нем не было активности в последнее время. Он будет закрыт, если в течение нескольких дней не будет никакой активности. Не принимайте это близко к сердцу — это полностью автоматизированное действие. Если это ошибка, просто оставьте комментарий, напишите мне в ЛС, отправьте почтового голубя или дымовой сигнал.
ProBot автоматически закрыл это из-за бездействия. Крикните, если это ошибка, и мы снова откроем его.
Обновление: лучший способ получить vscode для отладки сервера — добавить это в ваш launch.json и оставить конфигурацию devtool по умолчанию.
Это позволит выполнять отладку VSCode, а также улучшит отладку клиента (eval-source-maps ломает средство просмотра ошибок отладки React).
"sourceMapPathOverrides": {
"webpack:///*": "${workspaceRoot}/*"
}
Спасибо @бенхамлин. Есть ли у вас возможность легко переподключиться к экземпляру отладчика в VSCode после мягкого перезапуска ( rs
затем ENTER
) в Razzle?
ATM, если я делаю мягкий перезапуск, отладчик VSCode отключается, поэтому мне приходится убивать сервер и перезапускать его, а затем снова подключать отладчик.
@benhamlin Это работает как шарм с этой конфигурацией :wink:
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9230,
"sourceMapPathOverrides": {
"webpack:///*": "${workspaceRoot}/*"
}
}
@ourmaninamsterdam RS перезапустите сервер на новом порту отладки (9230 + 1), поэтому вам нужно изменить порт подключения в конфигурации запуска. дальше не стал разбираться :disappointed:
Самый полезный комментарий
Я решил это, используя другую настройку исходной карты, VSCode, похоже, не нравится вариант
cheap-module-sourcemap
.razzle.config.js
:launch.json
:и запустите сервер с
yarn start --inspect --inspect-port 9230
* отредактировано, спасибо @dguyonvarch за обнаружение ошибки.