From 9fd707a9a0ff7ffb5d5fb0aa593c8f0789f2ba04 Mon Sep 17 00:00:00 2001 From: guybedford Date: Tue, 21 Jun 2016 16:17:31 +0200 Subject: [PATCH] ensure full Node path checking with @node/x requires --- lib/core.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/core.js b/lib/core.js index 891d2215..9a9f437f 100644 --- a/lib/core.js +++ b/lib/core.js @@ -89,22 +89,17 @@ if (typeof require != 'undefined' && typeof process != 'undefined' && !process.b a URL. */ +var parentModuleContext; function getNodeModule(name) { if (!isPlain(name)) throw new Error('Node module ' + name + ' can\'t be loaded as it is not a package require.'); - var nodePath = this._nodeRequire('path'); - // try to load from node_modules - var module; - try { - module = this._nodeRequire(nodePath.resolve(process.cwd(), 'node_modules', name)); + if (!parentModuleContext) { + var Module = this._nodeRequire('module'); + parentModuleContext = new Module(process.cwd()); + parentModuleContext.paths = Module._nodeModulePaths(process.cwd()); } - catch(e) { - // fall back to direct require (in theory this is core modules only, which should really be filtered) - if (e.code == 'MODULE_NOT_FOUND') - module = this._nodeRequire(name); - } - return module; + return parentModuleContext.require(name); } function coreResolve(name, parentName) {