是否可以调试节点内部模块?

时间:2019-06-04 02:14:54

标签: node.js debugging visual-studio-code google-chrome-devtools

例如,我想在内部文件_http_server.js上添加一些断点,但是该文件实际上不在我的磁盘上。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

是的,在编译时,源文件中的.js文件被打包到node可执行文件中,这使我不确定是否/如何在此设置断点。

对我有用的东西

  1. 从结帐的源代码中将相关的.js文件复制到当前目录,例如readline.js
  2. 将本地进口商品从require('readline')更改为require('./readline')
  3. 使用未记录的node --expose-internals标志来允许复制的.js文件仍然require('internal/…')
  4. 在本地文件上使用console.log语句/调试器以了解正在发生的情况

答案 1 :(得分:0)

_http_server.js位于nodejs / lib / _http_server.js上。如果要调试此文件,建议从github.com/nodejs/node下载源文件并开始调试。 :)

答案 2 :(得分:0)

Chrome DevTools 让这一切变得简单。

使用 --inspect 标志启动 Node.js 进程:

$ node --inspect
Debugger listening on ws://127.0.0.1:9229/14be5d05-e959-47f9-bd82-e64c307d1afb
For help, see: https://nodejs.org/en/docs/inspector

访问 chrome://inspect 并打开附加到您的流程的 DevTools 会话:

chrome://inspect page

搜索内部文件(包括像 _http_server.js 这样的内部节点模块)并在任何你想要的地方添加断点:

Search includes internal files