Skip to content

Commit

Permalink
module: don't search in require.resolve.paths
Browse files Browse the repository at this point in the history
The paths used by require.resolve() should be treated as
starting points for module resolution, and not actually
searched.

PR-URL: nodejs#23683
Fixes: nodejs#18408
Refs: nodejs#23643
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
  • Loading branch information
cjihrig authored and refack committed Jan 10, 2019
1 parent bbc53f6 commit c8e113e
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 9 deletions.
3 changes: 0 additions & 3 deletions lib/internal/modules/cjs/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -584,9 +584,6 @@ Module._resolveFilename = function(request, parent, isMain, options) {
fakeParent.paths = Module._nodeModulePaths(path);
const lookupPaths = Module._resolveLookupPaths(request, fakeParent, true);

if (!paths.includes(path))
paths.push(path);

for (var j = 0; j < lookupPaths.length; j++) {
if (!paths.includes(lookupPaths[j]))
paths.push(lookupPaths[j]);
Expand Down
13 changes: 7 additions & 6 deletions test/fixtures/require-resolve.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ assert.throws(() => {
require.resolve('three')
}, /^Error: Cannot find module 'three'$/);

// However, it can be found if resolution contains the nested index directory.
assert.strictEqual(
require.resolve('three', { paths: [nestedIndex] }),
path.join(nestedIndex, 'three.js')
);
// If the nested-index directory is provided as a resolve path, 'three'
// cannot be found because nested-index is used as a starting point and not
// a searched directory.
assert.throws(() => {
require.resolve('three', { paths: [nestedIndex] })
}, /^Error: Cannot find module 'three'$/);

// Resolution from nested index directory also checks node_modules.
assert.strictEqual(
Expand All @@ -50,6 +51,6 @@ assert.throws(() => {
paths.unshift(nestedNodeModules);
assert.strictEqual(
require.resolve('bar', { paths }),
path.join(nestedNodeModules, 'bar.js')
path.join(nodeModules, 'bar.js')
);
}

0 comments on commit c8e113e

Please sign in to comment.