diff --git a/lib/module.js b/lib/module.js index 7aaf6f0713a..75809bafd49 100644 --- a/lib/module.js +++ b/lib/module.js @@ -34,6 +34,9 @@ function requireNative (id, cb) { // first pass, just local function require (id, parent, cb) { if (id in natives) return requireNative(id, cb); + if (id in nativeModuleCache) { + return nativeModuleCache[id]; + } if (parent && parent.uri) { var base = parent.uri; } else { @@ -212,6 +215,7 @@ function resolve (root, id, parent, cb) { function main (uri) { if (process.mainModule) return process.mainModule; process.mainModule = new Module(uri, null, "."); + nativeModuleCache["."] = process.mainModule; loadModule(process.mainModule, function (er) { if (er) throw er; }); @@ -260,7 +264,8 @@ function Module (uri, parent, id) { // bind require's context var self = this; this.require = function (id) { return require(id, self) }; - this.require.main = process.mainModule; + Object.defineProperty(this.require, "main", + { get : function () { return process.mainModule }}); this.require.async = function (id, cb) { return require(id, self, cb || noop) }; Object.defineProperty(this.require, "paths", { set : function (newPaths) { exports.paths = newPaths }