diff options
author | Bradley Farias <bradley.meck@gmail.com> | 2017-08-24 09:59:52 -0500 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-03-11 02:56:56 +0100 |
commit | 1ed36aeb53266f8f01e1cd442069024d258f632a (patch) | |
tree | b1a2e6e6890898587442d843f490711f5da66775 /lib/module.js | |
parent | 8b69d4aca9a89db1e986ce137ff67f4b8bf8803f (diff) | |
download | node-new-1ed36aeb53266f8f01e1cd442069024d258f632a.tar.gz |
module: check file ext before dir as documented
The documented resolution algorithm started to search for package.json
files prior to searching for file extensions when searching for a
specifier. Oddly, it did not search for index files at same time it
searched for package.json. This restores the documented behavior of
searching for file extensions prior to searching directories.
PR-URL: https://github.com/nodejs/node/pull/15015
Fixes: https://github.com/nodejs/node/issues/14990
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Khaidi Chu <i@2333.moe>
Diffstat (limited to 'lib/module.js')
-rw-r--r-- | lib/module.js | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/module.js b/lib/module.js index 468619f2bf..6d4e3dbfcf 100644 --- a/lib/module.js +++ b/lib/module.js @@ -219,6 +219,9 @@ Module._findPath = function(request, paths, isMain) { var exts; var trailingSlash = request.length > 0 && request.charCodeAt(request.length - 1) === CHAR_FORWARD_SLASH; + if (!trailingSlash) { + trailingSlash = /(?:^|\/)\.?\.$/.test(request); + } // For each path for (var i = 0; i < paths.length; i++) { @@ -236,10 +239,6 @@ Module._findPath = function(request, paths, isMain) { } else { filename = toRealPath(basePath); } - } else if (rc === 1) { // Directory. - if (exts === undefined) - exts = Object.keys(Module._extensions); - filename = tryPackage(basePath, exts, isMain); } if (!filename) { @@ -251,11 +250,13 @@ Module._findPath = function(request, paths, isMain) { } if (!filename && rc === 1) { // Directory. + // try it with each of the extensions at "index" if (exts === undefined) exts = Object.keys(Module._extensions); - filename = tryPackage(basePath, exts, isMain) || - // try it with each of the extensions at "index" - tryExtensions(path.resolve(basePath, 'index'), exts, isMain); + filename = tryPackage(basePath, exts, isMain); + if (!filename) { + filename = tryExtensions(path.resolve(basePath, 'index'), exts, isMain); + } } if (filename) { |