summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoão Reis <reis@janeasystems.com>2018-08-08 03:58:06 +0100
committerJoão Reis <reis@janeasystems.com>2018-09-12 03:32:05 +0100
commitb36c581d5bd7e6087aab794af222e122e5a32f03 (patch)
tree2729290a6d5d7d78bbc5ae6ea9c377cc14e7ab24 /lib
parent39937938d705413ea438c9d4695953b5164557ef (diff)
downloadandroid-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.js15
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) {