diff options
author | Phillip Johnsen <johphi@gmail.com> | 2016-03-13 21:40:38 +0100 |
---|---|---|
committer | Phillip Johnsen <johphi@gmail.com> | 2016-03-29 21:39:26 +0200 |
commit | d38503ab01c607ca55b4816e2c249411a3f10269 (patch) | |
tree | 80ad537aadc75f0c029e03530c19bdee1ce3e524 | |
parent | ccd81889fa55024ce77ecbc3e869479978fc98f2 (diff) | |
download | node-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.js | 3 | ||||
-rw-r--r-- | test/parallel/test-module-relative-lookup.js | 10 |
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'); |