How does require() in node.js work?
apply, javascript, node.js, require, this
Solution
Source code is here. `exports`/`require` are not keywords, but global variables. Your main script is wrapped before start in a function which has all the globals like `require`, `process` etc in its context.
Note that while module.js itself is using `require()`, that's a different require function, and it is defined in the file called "node.js"
Side effect of above: it's perfectly fine to have "return" statement in the middle of your module (not belonging to any function), effectively "commenting out" rest of the code
Problem
I tried this: ``` // mod.js var a = 1; this.b = 2; exports.c = 3; // test.js var mod = require('./mod.js'); console.log(mod.a); // undefined console.log(mod.b); // 2 console.log(mod.c); // 3, so this === exports? ``` So I image that require() may be implement like this: ``` var require = function (file) { var exports = {}; var run = function (file) { // include "file" here and run }; run.apply(exports, [file]); return exports; } ``` Is that right? Please help me to understand require(), or where can I find the source code. Thanks!