无法在 VS Code 中设置断点调试节点打字稿



我看到其他问题有相同问题,但我已经尝试了所有其他解决方案,但我没有任何效果。

我有一个打字稿节点应用程序,我正在尝试在VSCode中调试。

我的启动.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.,我尝试继续前进无济于事。

我正在运行节点 v6.11.5 和 VS 代码 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 打字脚本运行构建,如下所示

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...........,但是在尝试设置断点时仍然遇到相同的错误。

为了调试打字稿,您需要生成源映射文件。确保以下内容在您的tsconfig.json中,您应该会看到构建目录中生成的.js.map文件。

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

使用 gulp 打字稿:

gulp-typescript建议应该使用gulp-sourcemaps来生成源映射。

这是我在创建断点时中断的.js.map文件时开始的 gulp 任务。在此 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'));
});

自从更新 VS Code 以来,我无法再调试应用程序。

通过下载 1.23,我能够再次调试。

请看这里发布的答案:

如何降级 vscode

也在这里:

Visual Studio Code - 未命中节点调试器断点

相关内容

  • 没有找到相关文章

最新更新