From 60144295802efbf257d4c68f722c328fad87a6cb Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 5 Jun 2019 15:35:13 -0400 Subject: [PATCH] module: handle empty require.resolve() options If require.resolve() is passed an options object, but the paths option is not present, then use the default require.resolve() paths. PR-URL: https://github.com/nodejs/node/pull/28078 Fixes: https://github.com/nodejs/node/issues/28077 Reviewed-By: Richard Lau Reviewed-By: Yongsheng Zhang Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Reviewed-By: Anto Aravinth Reviewed-By: James M Snell --- lib/internal/modules/cjs/loader.js | 4 +++- test/fixtures/require-resolve.js | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 2798032fd96239..556f5ec5207029 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -599,7 +599,9 @@ Module._resolveFilename = function(request, parent, isMain, options) { } } } - } else if (options.paths !== undefined) { + } else if (options.paths === undefined) { + paths = Module._resolveLookupPaths(request, parent); + } else { throw new ERR_INVALID_OPT_VALUE('options.paths', options.paths); } } else { diff --git a/test/fixtures/require-resolve.js b/test/fixtures/require-resolve.js index 3d8500e5097a70..66521d12e99fc4 100644 --- a/test/fixtures/require-resolve.js +++ b/test/fixtures/require-resolve.js @@ -92,3 +92,9 @@ common.expectsError(() => { code: 'ERR_INVALID_OPT_VALUE', type: TypeError, }); + +// Verify that the default require.resolve() is used for empty options. +assert.strictEqual( + require.resolve('./printA.js', {}), + require.resolve('./printA.js') +);