Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

node.js Internals: How can I find out where `process.binding('eval')` gets defined?

  • How can I find out where in the C++ source code of node.js the JavaScript object gets defined which I can access through process.binding('eval')? - I already found out that it's in /src/node_script.cc in this special case, but: How can I know where I can find that module just when I just take a look on the /src/ directory overview? I don't want to step through all the files in /src/ in order to look for a module.
  • Where can I find some deep going information about the internals of process.binding()s?

Thanks.

like image 992
fridojet Avatar asked Nov 03 '22 17:11

fridojet


1 Answers

I was looking for the same myself today. I cannot guarantee that there isn't more to it, but this is what I discovered.

src/node_extensions.h contains a list of built-in modules, defined like:

ITEM(node_module_name)

where module_name is the name of the module (obviously)

You can find out which file defines that module by searching for which file has a line that starts with

NODE_MODULE(node_module_name, 

So, to find the file that defines the 'evals' module for process.bindings:

$ grep "NODE_MODULE(node_evals" src/*.cc
src/node_script.cc:NODE_MODULE(node_evals, node::InitEvals)
like image 114
Mat Avatar answered Nov 11 '22 04:11

Mat