From 96f14e2b4382c6c8ee3038534e9c20033933f326 Mon Sep 17 00:00:00 2001
From: MURAKAMI Masahiko <fossamagna2@gmail.com>
Date: Mon, 24 Oct 2022 22:12:58 +0900
Subject: [PATCH] module: require.resolve.paths returns null with node schema

require.resolve.paths should returns null with builtin module.
when builtin module without `node:` schema, `paths` returns null.
But, it don't return null when builtin module with `node:` schema.

Fixes: https://github.com/nodejs/node/issues/45001
---
 lib/internal/modules/cjs/loader.js    | 9 +++++++--
 test/parallel/test-require-resolve.js | 4 ++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 68edd781e33a3e..3c75220a3b43c6 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -712,8 +712,13 @@ if (isWindows) {
 }
 
 Module._resolveLookupPaths = function(request, parent) {
-  if (BuiltinModule.canBeRequiredByUsers(request) &&
-      BuiltinModule.canBeRequiredWithoutScheme(request)) {
+  if ((
+    StringPrototypeStartsWith(request, 'node:') &&
+    BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
+  ) || (
+    BuiltinModule.canBeRequiredByUsers(request) &&
+    BuiltinModule.canBeRequiredWithoutScheme(request)
+  )) {
     debug('looking for %j in []', request);
     return null;
   }
diff --git a/test/parallel/test-require-resolve.js b/test/parallel/test-require-resolve.js
index ab58033e2c9b5c..a38a8e074ab85d 100644
--- a/test/parallel/test-require-resolve.js
+++ b/test/parallel/test-require-resolve.js
@@ -63,6 +63,10 @@ require(fixtures.path('resolve-paths', 'default', 'verify-paths.js'));
     assert.strictEqual(require.resolve.paths(mod), null);
   });
 
+  builtinModules.forEach((mod) => {
+    assert.strictEqual(require.resolve.paths(`node:${mod}`), null);
+  });
+
   // node_modules.
   const resolvedPaths = require.resolve.paths('eslint');
   assert.strictEqual(Array.isArray(resolvedPaths), true);