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>
This commit is contained in:
parent
ccd81889fa
commit
d38503ab01
@ -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];
|
||||
}
|
||||
|
||||
|
10
test/parallel/test-module-relative-lookup.js
Normal file
10
test/parallel/test-module-relative-lookup.js
Normal file
@ -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');
|
Loading…
x
Reference in New Issue
Block a user