node.js Internals:我怎样才能找到`process.binding('eval')`的定义?

fri*_*jet 5 c++ v8 node.js libuv

  • 我怎样才能找到node.js的C++源代码中哪些JavaScript对象被定义,我可以访问哪些process.binding('eval')?- 我已经发现它是在/src/node_script.cc这个特殊情况下,但是:当我只是看一下目录概述时,我怎么知道在哪里可以找到该模块?我不想单步执行所有文件以查找模块./src//src/
  • 我在哪里可以找到关于process.binding()s 内部的一些深入信息?

谢谢.

Mat*_*Mat 2

我今天也在寻找同样的东西。我不能保证没有更多内容,但这就是我发现的。

src/node_extensions.h 包含内置模块列表,定义如下:

ITEM(node_module_name)
Run Code Online (Sandbox Code Playgroud)

其中 module_name 是模块的名称(显然)

您可以通过搜索哪个文件具有以以下字符开头的行来找出哪个文件定义了该模块

NODE_MODULE(node_module_name, 
Run Code Online (Sandbox Code Playgroud)

因此,要找到定义 process.bindings 的“evals”模块的文件:

$ grep "NODE_MODULE(node_evals" src/*.cc
src/node_script.cc:NODE_MODULE(node_evals, node::InitEvals)
Run Code Online (Sandbox Code Playgroud)