From 4bcf9b6b99ae28008800bfb46e3bb996eae3666e Mon Sep 17 00:00:00 2001 From: Roman Reiss Date: Wed, 18 Jan 2017 00:55:34 +0100 Subject: [PATCH] module: mark DEP0019 as EOL and remove compat code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This removes the compatibilty code that was in place to allow an unintended interaction between `require('.')` and `NODE_PATH`. The compatibility code and the accompanying deprecation warning has been in place since 2015-04-17. PR-URL: https://github.com/nodejs/node/pull/3384 Reviewed-By: James M Snell Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Michaƫl Zasso Reviewed-By: Ruben Bridgewater --- doc/api/deprecations.md | 2 +- lib/module.js | 26 +------------------------- test/parallel/test-require-dot.js | 6 ++---- 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index c34f4e04d9..5a0e1a898c 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -201,7 +201,7 @@ code. ### DEP0019: require('.') resolved outside directory -Type: Runtime +Type: End-of-Life In certain cases, `require('.')` may resolve outside the package directory. This behavior is deprecated and will be removed in a future major Node.js diff --git a/lib/module.js b/lib/module.js index 339a228da9..7bb8288f54 100644 --- a/lib/module.js +++ b/lib/module.js @@ -159,7 +159,6 @@ function tryExtensions(p, exts, isMain) { return false; } -var warned = false; Module._findPath = function(request, paths, isMain) { if (path.isAbsolute(request)) { paths = ['']; @@ -221,18 +220,6 @@ Module._findPath = function(request, paths, isMain) { } if (filename) { - // Warn once if '.' resolved outside the module dir - if (request === '.' && i > 0) { - if (!warned) { - warned = true; - process.emitWarning( - 'warning: require(\'.\') resolved outside the package ' + - 'directory. This functionality is deprecated and will be removed ' + - 'soon.', - 'DeprecationWarning', 'DEP0019'); - } - } - Module._pathCache[cacheKey] = filename; return filename; } @@ -335,8 +322,7 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { } // Check for relative path - if (request.length < 2 || - request.charCodeAt(0) !== 46/*.*/ || + if (request.charCodeAt(0) !== 46/*.*/ && (request.charCodeAt(1) !== 46/*.*/ && request.charCodeAt(1) !== 47/*/*/)) { var paths = modulePaths; @@ -347,16 +333,6 @@ Module._resolveLookupPaths = function(request, parent, newReturn) { paths = parent.paths.concat(paths); } - // Maintain backwards compat with certain broken uses of require('.') - // by putting the module's directory in front of the lookup paths. - if (request === '.') { - if (parent && parent.filename) { - paths.unshift(path.dirname(parent.filename)); - } else { - paths.unshift(path.resolve(request)); - } - } - debug('looking for %j in %j', request, paths); return (newReturn ? (paths.length > 0 ? paths : null) : [request, paths]); } diff --git a/test/parallel/test-require-dot.js b/test/parallel/test-require-dot.js index e2202efec1..2e8a5c79f6 100644 --- a/test/parallel/test-require-dot.js +++ b/test/parallel/test-require-dot.js @@ -10,9 +10,7 @@ const b = require(fixtures.path('module-require', 'relative', 'dot-slash.js')); assert.strictEqual(a.value, 42); assert.strictEqual(a, b, 'require(".") should resolve like require("./")'); +// require('.') should not lookup in NODE_PATH process.env.NODE_PATH = fixtures.path('module-require', 'relative'); m._initPaths(); - -const c = require('.'); - -assert.strictEqual(c.value, 42, 'require(".") should honor NODE_PATH'); +assert.throws(() => { require('.'); }, Error, "Cannot find module '.'");