我尝试为我的Node.js应用程序学习如何在VS Code中使用调试器。我在这里到处都找到了很多相关的帖子,但是我无法使事情顺利进行。
最终目标是要有一个由Babel 7处理的Typescript项目。我希望它在最新版本的Node.js(11.0.0)上运行。
到目前为止,我的平均成绩是平均水平,但是我在Medium上找到了一个很好的article,可以准确地表达我想要做的事情,除了它没有打字稿并且可以在Babel 6上运行。这是学习的一个很好的起点,因此我尝试重现它……我发现它的行为方式不同,这取决于我所运行的Node.js版本。 这是我的工作...
运行Node.js 8.12.0和VS Code 1.28,创建一个新的项目文件夹,并运行命令npm init -y
和npm install --save-dev babel-cli babel-preset-es2015
。
我更新我的package.json如下:
// package.json
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1"
},
"babel": {
"presets": [
"es2015"
]
}
然后我创建2个包含我的代码的javascript文件:
// src/app.js
import {add, multiply} from './math';
const num1 = 5, num2 = 10; // breakpoint on this line
console.log('Add: ', add(num1, num2));
console.log('Multiply: ', multiply(num1, num2));
// src/math.js
export function add(num1, num2) {
return num1 + num2; // breakpoint on this line
}
export function multiply(num1, num2) {
return num1 * num2; // breakpoint on this line
}
我使用以下脚本更新package.json文件
// package.json
"scripts": {
"compile": "babel src --out-dir .compiled --source-maps --watch"
},
运行npm run compile
时,在./.compile/
文件夹中创建了4个文件,其中2个是.map文件。
直到现在,一切正常。然后,我继续在VS Code中配置调试器。
我创建一个.vscode/launch.json
文件,并按如下所示对其进行编辑:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch App.js",
"program": "${workspaceRoot}/src/app.js",
"outFiles": [
"${workspaceRoot}/.compiled/**/*.js"
]
}
]
}
在我的代码中放置3个断点(请参见上面代码中的注释)后,我运行调试器,该调试器在所有3个断点处停止。 我对结果感到满意,因此将Node.js更新到v9.11.2。我再次运行调试器,它执行相同的操作。好。
然后,我更新Node.js v10.13.0。在不修改VS代码或代码中任何内容的情况下,我再次运行调试器。这次,仅考虑src/app.js
中的断点。 src/math.js
中的两个断点将被忽略。为什么?
将Node.js更新到v11.0.0时,我做同样的观察。
我认为Node.js在从v9.x.x更新到v10.x.x时执行调试的方式发生了一些变化,但我找不到。 我相信我只需要对launch.json进行一些不同的配置,并且我尝试了很多事情都没有成功。我当前的launch.json如下:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch App.js",
"program": "${workspaceFolder}/src/app.js",
"outFiles": [
"${workspaceFolder}/.compiled/**/*.js"
],
"sourceMaps": true,
"protocol": "inspector"
}
]
}
有什么想法为什么不能在Node v10.x及更高版本上运行,以及如何解决此问题?
非常感谢!