Не удается отладить текущий машинописный файл в 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]()