VS код непроверенных точек останова
Я пытаюсь отладить приложение Node/Express TypeScript в VS Code (v. 1.24.0), и все мои точки останова отображаются серым цветом во время отладки.
Ошибка "Неподтвержденная точка останова, точки останова установлены, но еще не связаны". Я искал, но не могу понять, что не так с моей конфигурации. В консоли нет ошибок, отладчик успешно подключается, когда я выбираю процесс, но точки останова не работают.
Как мне отладить это?
основная структура папок:
/.vscode
/src/server.ts
/dist/server.js
launch.json
tsconfig.json
launch.json
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"protocol": "inspector",
"address": "localhost",
"port": 8080,
"restart": true,
"preLaunchTask": "npm: build",
"sourceMaps": true,
"outFiles" : [ "${workspaceFolder}/dist/**/*.js" ]
},
tsconfig.json
{
"compilerOptions": {
"alwaysStrict": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"target": "es6",
"outDir": "dist",
"rootDir": "src",
"sourceMap": true,
"typeRoots": [ "node_modules/@types" ]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
tasks.json
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build",
"group": {
"kind": "build",
"isDefault": true
}
} ]
4 ответа
Для тех, кто сталкивается с этой ошибкой, я смог найти решение. Проблема заключалась в том, как я запускал процесс Node, а не в отображении исходных карт (что приводит к другой ошибке).
Чтобы присоединиться к процессу, я запустил его из терминала VS Code следующим образом:
node --inspect dist/server.js
launch.json:
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"protocol": "inspector",
"address": "localhost",
"port": 8080,
"restart": true,
"preLaunchTask": "npm: build",
"sourceMaps": true,
"outFiles" : [ "${workspaceRoot}/dist/**/*.js" ]
},
Я обнаружил, что все точки останова, которые я пытался установить в одном файле, получили эту проблему, но не из остальных.
Я назвал файл dispatcher.js строчными буквами, но вытащил его на узел с помощью:
const { Dispatcher } = require('./Dispatcher')
и содержимое было классом javascript, экспортируемым как:
module.exports = { Dispatcher }
Для будущих читателей: я столкнулся с этой проблемой, потому что я выполнил сборку своего приложения перед попыткой отладки. Сборка prod удаляет исходные карты, необходимые VS Code для успешной отладки, поэтому я запустил сборку своего приложения, а затем отладил, и все заработало, как ожидалось.
Я столкнулся с идентичной проблемой; если присутствует ошибка, отладчик сообщит об ошибке, но если ошибки нет, он не остановится на точках останова. Для меня было решено указать точное имя файла, а не только localhost. Например, на NodeJS, Express просто указав localhost:3000
не остановлюсь на моих контрольных точках, но указав localhost:3000/index.html
работал как положено
Полная конфигурация, которая останавливается на точках останова, как и ожидалось (на сегодняшний день):
Моя папка открывается в VSCode: learningPixi
с полным расположением папки (Ubuntu Linux): /home/leigh/node/pixi-tut/learningPixi
Моя структура папок:
/home/leigh/node/pixi-tut/learningPixi/.vscode/launch.json
/home/leigh/node/pixi-tut/learningPixi/public/index.html
/home/leigh/node/pixi-tut/learningPixi/server.js
Содержимое моего файла launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000/index.html",
"webRoot": "${workspaceFolder}/public",
"skipFiles": ["pixi.min.js"]
}
]
}
"skipFiles" также был очень полезен, иначе отладчик шагает в каждый вызов функции
Моя (очень базовая) конфигурация экспресс-сервера только для отладки JavaScript в статических файлах была такой:
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, '/public')));
app.listen(3000, () => console.log('App started on port 3000'));
И в соответствии с приведенной выше структурой папок убедитесь, что index.html находится в папке /public.
При отладке JavaScript из файла HTML вам также может понадобиться перейти к настройкам в VSCode и включить: Разрешить точки останова везде
Я столкнулся с этой проблемой, используя vscode 1.25
Похоже, это срабатывает, когда источник, содержащий точку останова (.ts) изменяется во время сеанса отладки. Точки останова могут быть повторно включены путем повторного сохранения источника или повторного переключения точки останова.
Однако, если источник был изменен, отладку необходимо перезапустить, чтобы выполнить синхронизацию с источником.
Эта проблема, по-видимому, распространяется и на режим редактирования, точки останова остаются "непроверенными" даже после выхода из режима отладки. Снова, повторное сохранение источника, кажется, повторно включает точки останова в этом случае.
Я получил эту проблему сегодня, я попытался пересобрать и снова запустить отладчик. Я закрыл все экземпляры VS Code и перезапустил, работая сейчас.