我看到其他有同样问题的问题,但是我已经尝试了所有其他解决方案,但在我的环境中没有任何作用。
我正在尝试在VSCode中调试一个typescript Node应用程序。
我的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
项,但类型验证会抱怨属性webRoot不允许
。 我尝试继续进行,但没有效果。
我正在运行Node v6.11.5和VS Code v1.23.0。
我曾经看到有人在帖子中呼吁运行.scripts标签以获得更多信息来帮助解决问题,但是当我在调试控制台中输入.scripts
时,它会显示无效表达式:意外的令牌.
我的tsconfig.json文件是:
"compilerOptions": {
"outDir": "build",
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"typeRoots": ["node_modules/@types"]
},
然而,我的构建文件夹中不存在 .js.map
文件。我是通过以下方式使用 gulp-typescript 进行构建的。
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 任务。
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...........
,但是当我尝试设置断点时仍然出现相同的错误。
"sourceMap": true
,但是在我的构建目录中没有.js.map
文件,只有.js
文件。还有其他的设置吗?我已经在问题中添加了使用gulp-typescript进行构建的方式。 - Joshua Ohanagulp-sourcemaps
值得研究。 - Clinterror TS2300: 重复标识符 'Promise'。
但是调试问题已经解决了。 - Joshua Ohana