vs code: отладка машинописного текста, работающего в nodejs, с указанием источника root - PullRequest
0 голосов
/ 27 февраля 2020

Я хотел бы отладить мой машинописный код (который запускается в NodeJS) с помощью VSCode. Следующий код является моей отправной точкой и отлично работает.

Код машинописного текста:

//src/index.ts
console.log('line 1');
console.log('line 2');

Настройки компилятора:

//tsconfig.json
{
    "compilerOptions": {
        "module": "commonjs",
        "sourceMap": true
    },
    "exclude": [
        "node_modules"
    ]
}

И конфигурация запуска

//.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/src/index.js"
        }
    ]
}

В приведенной выше настройке я могу добавить точки останова в коде набора текста и затем начать отладку.

Весь исходный код набора текста находится в каталоге с именем src/. Я хотел бы указать это в настройках компилятора, добавив следующий параметр конфигурации:

"compilerOptions": {
    //...
    "sourceRoot": "src"

Он по-прежнему компилируется очень хорошо, и при выполнении выводит «строку 1», «строку 2».

Однако контрольные точки больше не работают. Я посмотрел на сгенерированные исходные карты, и они указывают путь «source Root»: «sr c». Я предполагаю, что это нарушает поиск исходного кода. Поскольку исходные источники находятся в той же папке, что и сгенерированный вывод. Как мне правильно настроить это в компиляторе?

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Самый простой способ отладки ts в vscode - использовать ts-node

Затем я использую ts-node в моем скрипте запуска, так что

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ts node inspector",
      "type": "node",
      "request": "launch",
      "args": ["${workspaceRoot}/src/server.ts"],
      "runtimeArgs": ["-r", "ts-node/register"],
      "cwd": "${workspaceRoot}",
      "protocol": "inspector",
      "internalConsoleOptions": "openOnSessionStart",
      "env": {
        "TS_NODE_IGNORE": "false"
      }
    }
  ]
}
0 голосов
/ 27 февраля 2020

Документация объясняет, что sourceRoot:

Указывает расположение, в котором отладчик должен находить файлы TypeScript вместо исходных расположений. Используйте этот флаг, если источники будут расположены во время выполнения в другом месте, чем во время разработки. Указанное расположение будет встроено в исходную карту, чтобы указать отладчику, где будут находиться исходные файлы.

Так что я использовал его неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...