我有一个角度应用程序,在打字稿中使用e2e测试,我想在VSCode中运行调试。我去read.me看看如何运行调试,这很容易。但我的问题是打字稿测试中的断点并没有停止。 正如我所看到的,我有源代码问题,而不是生成。
tsconfig.json
{
"compileOnSave": true,
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/protractor/bin/protractor",
"stopOnEntry": false,
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"args": [
"${workspaceRoot}/protractor.conf.js"
]
}
]
}
protractor.conf.js
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/docs/referenceConf.js
/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};
据我所知,ts-node正在编译ts到js,可能它不是生成源图,或者它们存储在某个特定的位置
我做错了什么?
答案 0 :(得分:2)
看起来Protractor本身就是calling into source-map-support
,它覆盖了ts-node
的调用。
尝试在protractor.conf.js中启用skipSourceMapSupport
option。
答案 1 :(得分:0)
将以下内容添加到 laumch.json
对我有效:
"type": "pwa-node",
...
"sourceMaps": true,
"resolveSourceMapLocations": [
"${workspaceFolder}/**",
"!**/node_modules/**"
],
(skipSourceMapSuppor: true
无效。)
编辑:这仅适用于类型 pwa-node
,不适用于 node
。这针对新的调试器。有关详细信息,请参阅此答案:https://stackoverflow.com/a/63662561/407758
答案 2 :(得分:0)
这是一篇旧帖子,但希望这能帮助其他偶然发现的人。正如您所提到的,使用 ts-node,不会像使用 tsc
编译时那样将任何文件写入工作区中的磁盘。获得断点命中的方法是在运行量角器时注册 ts-node。
试试这个(注意添加到 args
属性)。
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/protractor/bin/protractor",
"args": [
"${workspaceRoot}/protractor.conf.js",
"--require", "ts-node/register"
]
"stopOnEntry": false,
"sourceMaps": true,
"cwd": "${workspaceRoot}",
}
]
}
在我的 launch.json 中,我还包含以下内容以确保我不会进入不属于我的代码(如 vscode 文档中的 skipping uninteresting code 所述)。
"skipFiles": [
"<node_internals>/**",
"${workspaceRoot}/node_modules/**",
]
不过,我似乎遇到了问题。它破坏了我的代码并跳过了 node_modules 文件夹,但我仍然看到它破坏了一些 node_internals 文件。我还没有找出原因,但至少我可以单步执行代码。