diff --git a/src/node.js b/src/node.js index 0b529665598..4a9a2348b61 100644 --- a/src/node.js +++ b/src/node.js @@ -78,14 +78,19 @@ function createInternalModule (id, constructor) { // Like, natives.fs is the contents of lib/fs.js var natives = process.binding('natives'); -function requireNative (id) { - if (internalModuleCache[id]) return internalModuleCache[id].exports; - if (!natives[id]) throw new Error('No such native module ' + id); +function loadNative (id) { var m = new Module(id); internalModuleCache[id] = m; var e = m._compile(natives[id], id); if (e) throw e; - return m.exports; + m.loaded = true; + return m; +} + +function requireNative (id) { + if (internalModuleCache[id]) return internalModuleCache[id].exports; + if (!natives[id]) throw new Error('No such native module ' + id); + return loadNative(id).exports; } @@ -546,10 +551,7 @@ function loadModule (request, parent, callback) { // Try to compile from native modules if (natives[id]) { debug('load native module ' + id); - cachedModule = new Module(id); - var e = cachedModule._compile(natives[id], id); - if (e) throw e; - internalModuleCache[id] = cachedModule; + cachedModule = loadNative(id); } }