diff options
author | João Reis <reis@janeasystems.com> | 2018-08-08 03:58:06 +0100 |
---|---|---|
committer | João Reis <reis@janeasystems.com> | 2018-09-12 03:32:05 +0100 |
commit | b36c581d5bd7e6087aab794af222e122e5a32f03 (patch) | |
tree | 2729290a6d5d7d78bbc5ae6ea9c377cc14e7ab24 /lib | |
parent | 39937938d705413ea438c9d4695953b5164557ef (diff) | |
download | android-node-v8-b36c581d5bd7e6087aab794af222e122e5a32f03.tar.gz android-node-v8-b36c581d5bd7e6087aab794af222e122e5a32f03.tar.bz2 android-node-v8-b36c581d5bd7e6087aab794af222e122e5a32f03.zip |
module: accept Windows relative path
Before this change, require('.\\test.js') failed while
require('./test.js') succeeded. This changes _resolveLookupPaths so
that both ways are accepted on Windows.
Fixes: https://github.com/nodejs/node/issues/21918
PR-URL: https://github.com/nodejs/node/pull/22186
Reviewed-By: Phillip Johnsen <johphi@gmail.com>
Reviewed-By: John-David Dalton <john.david.dalton@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/modules/cjs/loader.js | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 39f9766d3e..86ed3ac1a9 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -80,6 +80,8 @@ const { CHAR_9, } = require('internal/constants'); +const isWindows = process.platform === 'win32'; + function stat(filename) { filename = path.toNamespacedPath(filename); const cache = stat.cache; @@ -310,7 +312,7 @@ Module._findPath = function(request, paths, isMain) { // 'node_modules' character codes reversed var nmChars = [ 115, 101, 108, 117, 100, 111, 109, 95, 101, 100, 111, 110 ]; var nmLen = nmChars.length; -if (process.platform === 'win32') { +if (isWindows) { // 'from' is the __dirname of the module. Module._nodeModulePaths = function(from) { // guarantee that 'from' is absolute. @@ -403,11 +405,12 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { return (newReturn ? null : [request, []]); } - // Check for relative path + // Check for non-relative path if (request.length < 2 || request.charCodeAt(0) !== CHAR_DOT || (request.charCodeAt(1) !== CHAR_DOT && - request.charCodeAt(1) !== CHAR_FORWARD_SLASH)) { + request.charCodeAt(1) !== CHAR_FORWARD_SLASH && + (!isWindows || request.charCodeAt(1) !== CHAR_BACKWARD_SLASH))) { var paths = modulePaths; if (parent) { if (!parent.paths) @@ -480,7 +483,9 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { // make sure require('./path') and require('path') get distinct ids, even // when called from the toplevel js file - if (parentIdPath === '.' && id.indexOf('/') === -1) { + if (parentIdPath === '.' && + id.indexOf('/') === -1 && + (!isWindows || id.indexOf('\\') === -1)) { id = './' + id; } @@ -746,8 +751,6 @@ Module.runMain = function() { }; Module._initPaths = function() { - const isWindows = process.platform === 'win32'; - var homeDir; var nodePath; if (isWindows) { |