VS代码:调试JavaScript。不同版本的Node.js的行为

时间:2018-11-01 15:01:43

标签: javascript node.js debugging visual-studio-code

我尝试为我的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 -ynpm 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及更高版本上运行,以及如何解决此问题?

非常感谢!

0 个答案:

没有答案