我有一个 node_js 项目,其中包含我们自己的一些 node_js 包。它们位于 npm 私有(private)仓库中,并在 node_modules 中显示为:
@company/package_name
我们正在尝试在这段代码中设置断点并发现它们永远不会被命中。
我们认为可能会有一个默认的 skipFile 排除 node_modules 并添加到我们的 launch.json:
"skipFiles": ["!${workspaceRoot}/node_modules/**/*.js"]
没有效果。
关于如何在 node_modules 目录中启用调试的任何提示?
最佳答案
我知道这是一个老问题,但如果有人仍然设法偶然发现这个问题,您可以使用 VS 代码调试 node_module 文件,方法是首先将 node_module 包与主项目进行符号链接(symbolic link),然后告诉 VS 代码使用符号链接(symbolic link)。
符号链接(symbolic link) node_module 包
如果您要在 node_module 包中工作,最好对它进行符号链接(symbolic link),这样您在项目中所做的更改也会同时应用于模块的代码,因此,当您完成编辑时包,您可以直接查看差异并提交它,而不是从 node_module 内部复制粘贴并手动应用它。
- 要将 node_module 中的包与您的项目进行符号链接(symbolic link),请首先在您的系统上克隆 repo。
- 在目录中运行
npm link
。 - 然后转到你的主项目,然后运行
npm link package_name
来链接它。
例如,如果您想将包 sample-node-module 与项目 sample-project 链接,该项目使用 sample-node-module 作为它的依赖,你可以通过以下方式来做:
cd sample-node-module
npm link
cd sample-project
npm link sample-node-module
请注意在第二个 link
命令中输入克隆存储库的文件夹名称(而不是包名称本身)。您不必提供完整路径。您可以阅读更多信息 here
告诉 VS Code 在调试时使用符号链接(symbolic link)
完成上述操作后,您只需在 VS Code 的 launch.json 中添加这个小配置,即可检测 node_modules 中的断点:
{
"runtimeArgs": [
"--preserve-symlinks"
]
}
可以在 here 找到有关此的文档
关于node.js - node_modules目录下的vscode调试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021083/