Не удается отладить текущий машинописный файл в VS Code, потому что не удается найти соответствующий JavaScript

Я использую Visual Studio Code версии 1.17, и моя цель - отладить текущий файл typescript. У меня есть задача сборки, поэтому у меня всегда есть соответствующий файл javascript, например:

src/folder1/folder2/main.ts
src/folder1/folder2/main.js

Я попробовал следующую конфигурацию launch.json:

{
  "type": "node",
  "request": "launch",
  "name": "Current File",
  "program": "${file}",
  "console": "integratedTerminal",
  "outFiles": [
    "${workspaceFolder}/${fileDirname}**/*.js"
  ]
}

Но я получаю ошибку: Cannot launch program '--full-path-to-project--/src/folder1/folder2/main.ts' because corresponding JavaScript cannot be found.

Но соответствующий файл JavaScript существует!

tsconfig.json:

{
"compileOnSave": true,
"compilerOptions": {
    "target": "es6",
    "lib": [
        "es2017",
        "dom"
    ],
    "module": "commonjs",
    "watch": true,
    "moduleResolution": "node",
    "sourceMap": true
    // "types": []
},
"include": [
    "src",
    "test"
],
"exclude": [
    "node_modules",
    "typings"
]}

Ответ 1

Конфигурация для ваших outFiles указывает на неправильный каталог.

Замена вашей конфигурации launch.json на это исправит это:

{
  "type": "node",
  "request": "launch",
  "name": "Current File",
  "program": "${file}",
  "console": "integratedTerminal",
  "outFiles": ["${fileDirname}/*.js"]
}

Из ссылки на переменную vscode launch.json:

${fileDirName} текущее имя файла

должен быть каталог, который вам нужен.

Обратите внимание, что вы также можете использовать "outFiles": ["${fileDirname}/**/*.js"] для включения подкаталогов.

Конфигурация, которую вы используете, добавляет следующий каталог:

"${workspaceFolder}/${fileDirname}**/*.js"

Что означает что-то вроде:

"/path/to/root/path/to/root/src/folder1/folder2/**/*.js"

то есть путь к корню находится там дважды, что делает его неверным.

Если ваши файлы .js находятся в другом outDir: просто используйте путь к такому каталогу. sourceMaps сделает все остальное.

Например, если вы поместите ваши файлы .js в каталог dist:

"outFiles": ["${workspaceFolder}/dist/**/*.js"]

Ответ 2

Проблема может быть в файлах вашей карты, а не в конфигурации.

Прежде чем пытаться сделать что-то еще, вы должны убедиться, что ваши пути, которые вы используете в конфигурации запуска, верны.

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

Если это не работает, вы должны:

Проверьте ваш tsconfig и убедитесь, что mapRoot в compilerOptions не установлен на что-либо. Вот что официальная документация должна сказать об этом:

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

Вы можете прочитать больше об этом здесь

В большинстве случаев вы действительно не хотите ничего устанавливать.

Кроме того, убедитесь, что

"sourceMap": правда '

устанавливается в compilerOptions в tsconfig.json, и генерируются файлы карт.

Ответ 3

В случае, если кто-то столкнется с этим: если вы используете webpack для создания своего проекта, вы должны использовать параметр devtool, который генерирует совместимые с кодом Code исходные карты. Благодаря методам проб и ошибок cheap-module-source-map и source-map работают хорошо. Я добавил это в мой webpack.config.js:

devtool: env.production ? 'source-map' : 'cheap-module-source-map'

Ответ 4

Это сработало в моем случае:

Зайдите в ваш gulpfile.js и найдите строку, которая содержит sourcemaps.write(). Измените эту строку на

        .pipe(sourcemaps.write('.', { includeContent: false, sourceRoot: '../lib' }))

Перестройте свой проект и попробуйте снова запустить отладчик. Кредит переходит к roblourens на GitHub. Он связал эту страницу, что было полезно.

Ответ 5

В моем случае виновником установки рабочего каталога был какой-то каталог, отличный от каталога файлов в файле launch.json:

"cwd": "${workspaceFolder}/dist"

Возможно, это может быть ошибка в VSCode.

Ответ 6

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

C:\Users\userName\AppData\Roaming\npm 

enter image description here