vscode node_modules目录中的调试代码

Chr*_*man 11 node.js visual-studio-code

我有一个node_js项目,其中包含一些我们自己的node_js包.它们位于npm私有仓库中,并在node_modules中显示为:

@company/package_name
Run Code Online (Sandbox Code Playgroud)

我们正在尝试在此代码中设置断点,并发现它们永远不会被击中.

我们认为可能有一个默认的skipFile,它排除了node_modules并添加到我们的launch.json中:

"skipFiles": ["!${workspaceRoot}/node_modules/**/*.js"]
Run Code Online (Sandbox Code Playgroud)

没有效果.

有关如何在node_modules目录中启用调试的任何提示?

The*_*tor 5

我知道这是一个老问题,但是如果有人仍然设法解决这个问题,您可以使用VS代码来调试node_module文件,方法是先将node_module软件包与主项目符号链接,然后告诉VS代码使用symlink。

Symlink node_module软件包

如果您要使用node_module软件包,则最好对其进行符号链接,以便将您在项目中进行的更改同时应用于模块的代码,因此,在完成对软件包的编辑后,您可以直接看到diff并提交它,而不是从node_module内部复制粘贴并将其手动应用。

  1. 要将node_module内的软件包与项目符号链接,请首先在系统上克隆存储库。
  2. npm link在目录中运行。
  3. 然后转到您的主项目,然后运行npm link package_name以链接它。

例如,如果您想将package sample-node-module包与一个使用sample-node-module作为依赖项的project sample-project链接,则可以按以下方式进行操作:

cd sample-node-module
npm link
cd sample-project
npm link sample-node-module
Run Code Online (Sandbox Code Playgroud)

请注意,在第二个link命令中输入克隆存储库的文件夹名称(而不是包名称本身)。您不必提供完整的路径。您可以在这里了解更多信息

告诉VS Code在调试时使用符号链接

完成上述操作后,您只需在VS Code的launch.json中添加此小配置,即可检测到node_modules内部的断点:

{
"runtimeArgs": [
    "--preserve-symlinks"
]
}
Run Code Online (Sandbox Code Playgroud)

可以在这里找到有关此文档

  • 嘿克里斯,如果这个答案解决了您的问题,请投票并将答案标记为“已接受的答案”。谢谢 :) (3认同)
  • 嘿@Flion,感谢您的回复并指出了新方法!正如你所看到的,这个答案本身已经有两年多了,当时这对我有用。我看了你的建议,似乎它可能有效,但由于我现在无法尝试你的建议,如果你可以写另一个答案,甚至更新这个答案以包含该信息,那就太好了:) (3认同)