Невозможно установить точки отладки узлов отладки в коде VS - PullRequest
0 голосов
/ 06 мая 2018

Я вижу другие вопросы с той же проблемой, но я пробовал все другие решения, и ничего не помогало мне.

У меня есть приложение для машинописного Node, которое я пытаюсь отладить в VSCode.

Мой файл launch.json

 "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach",
      "port": 5858,
      "sourceMaps": true,
      "outFiles": ["${workspaceRoot}/build/**/*.js"]
    }
  ]

Это нормально для моего приложения. Я могу сделать паузу и продолжить, все работает правильно, но я не могу войти в код или установить точку останова.

Я запускаю свое приложение через gulp nodemon

nodemon({
    script: 'build/server.js',
    watch: 'src',
    ext: 'ts',
    tasks: ['clean', 'compile'],
    exec: 'node --debug'
});

Консоль отводит труб

Отладчик прослушивает [::]: 5858

Теперь, когда я пытаюсь установить точку останова, он говорит

Неподтвержденная точка останова, точка останова игнорируется, поскольку сгенерированный код не найден (проблема с исходной картой?).

Обновление;

Я также пытался использовать элемент webRoot, как предлагали другие посты вокруг. При вводе проверки жалуется, что Property webRoot is not allowed., я все равно пытался продолжить, но безрезультатно.

Я использую Node v6.11.5 и VS Code v1.23.0

Я видел в сообщениях людей, призывающих запустить тег .scripts для получения дополнительной информации, которую помогает решить, но когда я делаю это, набрав .scripts в консоли отладки, он говорит: invalid expression: unexpected token .

Мой tsconfig.json

"compilerOptions": {
    "outDir": "build",
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "typeRoots": ["node_modules/@types"]
  },

Тем не менее, в папке сборки нет файлов .js.map. Я запускаю сборку через gulp-typcript следующим образом

gulp.task('compile', () => {
    tsProject = ts.createProject('tsconfig.json');
    let tsResult = tsProject.src().pipe(ts());

    return merge([
        tsResult.dts.pipe(gulp.dest('build/definitions')),
        tsResult.js.pipe(gulp.dest('build'))
    ]);
});

В соответствии с предложением я также добавил следующее задание глотка

gulp.task('jsMaps', function() {
    gulp.src('build/**/*.js')
      .pipe(sourcemaps.init())
      .pipe(sourcemaps.write())
      .pipe(gulp.dest('build'));
  });

И подтвердил, что мои файлы сборки .js имеют встроенные исходные карты, похоже на //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc..........., но я все еще получаю ту же ошибку при попытке установить точку останова.

Ответы [ 2 ]

0 голосов
/ 23 июля 2018

После обновления VS Code я больше не мог отлаживать приложения.

Загрузив 1.23, я снова смог отладить.

Пожалуйста, смотрите ответ размещен здесь:

Как понизить vscode

Также здесь:

Код Visual Studio - точки прерывания отладчика узла не достигаются

0 голосов
/ 09 мая 2018

Для отладки машинописного текста вам нужно сгенерировать файлы исходных карт. Убедитесь, что в вашем tsconfig.json есть следующее, вы должны увидеть .js.map файлы, сгенерированные в вашем каталоге сборки.

{
  "compilerOptions": {
    "sourceMap": true
  }
}

С глотком:

gulp-typescript предполагает, что gulp-sourcemaps следует использовать для генерации исходных карт.

Это задание, которое я выполнил, создавая .js.map файлы, которые разбиваются на точках останова. Найден в этом выпуске gulp-машинописи

var gulp = require('gulp');
var sourcemaps = require('gulp-sourcemaps');
var path = require('path');
var ts = require('gulp-typescript');

gulp.task('compile', () => {
    tsProject = ts.createProject('tsconfig.json');
    let tsResult = tsProject.src()
        .pipe(sourcemaps.init())
        .pipe(tsProject());

    tsResult.js
        .pipe(sourcemaps.write({
          sourceRoot: function (file) {
            var sourceFile = path.join(file.cwd, file.sourceMap.file);
            return path.relative(path.dirname(sourceFile), file.cwd);
          }
        }))
        .pipe(gulp.dest('build'));
});
...