diff --git a/src/node.js b/src/node.js index 334d8c5ee..43ccdb032 100644 --- a/src/node.js +++ b/src/node.js @@ -238,6 +238,9 @@ var id = resolved[0]; var filename = resolved[1]; + var cachedModule = moduleCache[filename]; + if (cachedModule) return cachedModule.exports; + // With natives id === request // We deal with these first if (natives[id]) { @@ -253,9 +256,6 @@ return requireNative(id); } - var cachedModule = moduleCache[filename]; - if (cachedModule) return cachedModule.exports; - var module = new Module(id, parent); moduleCache[filename] = module; module.load(filename); diff --git a/test/simple/test-require-cache.js b/test/simple/test-require-cache.js new file mode 100644 index 000000000..a069d0a79 --- /dev/null +++ b/test/simple/test-require-cache.js @@ -0,0 +1,22 @@ +var common = require('../common'); +var assert = require('assert'); + +(function testInjectFakeModule() { + var relativePath = '../fixtures/semicolon'; + var absolutePath = require.resolve(relativePath); + var fakeModule = {}; + + require.cache[absolutePath] = {exports: fakeModule}; + + assert.strictEqual(require(relativePath), fakeModule); +})(); + + +(function testInjectFakeNativeModule() { + var relativePath = 'fs'; + var fakeModule = {}; + + require.cache[relativePath] = {exports: fakeModule}; + + assert.strictEqual(require(relativePath), fakeModule); +})();