node.js - node_modules目录下的vscode调试代码

标签 node.js visual-studio-code

我有一个 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 内部复制粘贴并手动应用它。

  1. 要将 node_module 中的包与您的项目进行符号链接(symbolic link),请首先在您的系统上克隆 repo。
  2. 在目录中运行 npm link
  3. 然后转到你的主项目,然后运行 ​​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/

相关文章:

javascript - 正则表达式没有捕获值(value)

c++ - 无法使用 pkg-config 在 VSCode 中启动外部程序

asp.net-core - 为什么我在 Visual Studio Code 中显示了这么多 "Problems",做例程教程?

visual-studio-code - 我如何在 vscode 中变得更漂亮

node.js - React App 和 Express API 的单个可执行文件

javascript - 是否可以运行无限循环而不阻塞执行流程?

node.js - 关闭数据库连接(Firebase+Node.js)

node.js - 如何让 Resilient 自动重新提交速率限制请求

visual-studio-code - 如何在 Visual Studio 代码中安装扩展

intellij-idea - 在VSCode中删除一行后向上移动光标