summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhillip Johnsen <johphi@gmail.com>2016-03-13 21:40:38 +0100
committerPhillip Johnsen <johphi@gmail.com>2016-03-29 21:39:26 +0200
commitd38503ab01c607ca55b4816e2c249411a3f10269 (patch)
tree80ad537aadc75f0c029e03530c19bdee1ce3e524
parentccd81889fa55024ce77ecbc3e869479978fc98f2 (diff)
downloadnode-new-d38503ab01c607ca55b4816e2c249411a3f10269.tar.gz
module: prioritize current dir for local lookups
This fixes a bug where a 3rd party module found in node_modules, would be preferred over a ./local module with the same name. Fixes: https://github.com/nodejs/node/issues/5684 PR-URL: https://github.com/nodejs/node/pull/5689 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
-rw-r--r--lib/module.js3
-rw-r--r--test/parallel/test-module-relative-lookup.js10
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/module.js b/lib/module.js
index 74db325dab..b992ca8faf 100644
--- a/lib/module.js
+++ b/lib/module.js
@@ -250,8 +250,7 @@ Module._resolveLookupPaths = function(request, parent) {
if (!parent || !parent.id || !parent.filename) {
// make require('./path/to/foo') work - normally the path is taken
// from realpath(__filename) but with eval there is no filename
- var mainPaths = ['.'].concat(modulePaths);
- mainPaths = Module._nodeModulePaths('.').concat(mainPaths);
+ var mainPaths = ['.'].concat(Module._nodeModulePaths('.'), modulePaths);
return [request, mainPaths];
}
diff --git a/test/parallel/test-module-relative-lookup.js b/test/parallel/test-module-relative-lookup.js
new file mode 100644
index 0000000000..002ae1a8fb
--- /dev/null
+++ b/test/parallel/test-module-relative-lookup.js
@@ -0,0 +1,10 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+const _module = require('module'); // avoid collision with global.module
+const lookupResults = _module._resolveLookupPaths('./lodash');
+const paths = lookupResults[1];
+
+assert.strictEqual(paths[0], '.',
+ 'Current directory is prioritized before node_modules for local modules');