Skip to content

Commit 0924b99

Browse files
zhmushandanielleadams
authored andcommitted
loader: make require.resolve throw for unknown builtin modules
Fixes: nodejs/node#43274 PR-URL: nodejs/node#43336 Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
1 parent 773f587 commit 0924b99

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

lib/internal/modules/cjs/loader.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -743,19 +743,19 @@ Module._load = function(request, parent, isMain) {
743743
}
744744
}
745745

746-
const filename = Module._resolveFilename(request, parent, isMain);
747-
if (StringPrototypeStartsWith(filename, 'node:')) {
746+
if (StringPrototypeStartsWith(request, 'node:')) {
748747
// Slice 'node:' prefix
749-
const id = StringPrototypeSlice(filename, 5);
748+
const id = StringPrototypeSlice(request, 5);
750749

751750
const module = loadNativeModule(id, request);
752751
if (!module?.canBeRequiredByUsers) {
753-
throw new ERR_UNKNOWN_BUILTIN_MODULE(filename);
752+
throw new ERR_UNKNOWN_BUILTIN_MODULE(request);
754753
}
755754

756755
return module.exports;
757756
}
758757

758+
const filename = Module._resolveFilename(request, parent, isMain);
759759
const cachedModule = Module._cache[filename];
760760
if (cachedModule !== undefined) {
761761
updateChildren(parent, cachedModule, true);
@@ -814,8 +814,12 @@ Module._load = function(request, parent, isMain) {
814814
};
815815

816816
Module._resolveFilename = function(request, parent, isMain, options) {
817-
if (StringPrototypeStartsWith(request, 'node:') ||
818-
NativeModule.canBeRequiredByUsers(request)) {
817+
if (
818+
(
819+
StringPrototypeStartsWith(request, 'node:') &&
820+
NativeModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
821+
) || NativeModule.canBeRequiredByUsers(request)
822+
) {
819823
return request;
820824
}
821825

test/parallel/test-require-resolve.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,13 @@ require(fixtures.path('resolve-paths', 'default', 'verify-paths.js'));
8080
assert.strictEqual(resolvedPaths.includes('/node_modules'), false);
8181
});
8282
}
83+
84+
{
85+
assert.strictEqual(require.resolve('https'), 'https');
86+
assert.strictEqual(require.resolve('fs'), 'fs');
87+
88+
assert.throws(
89+
() => require.resolve('unknown'),
90+
{ code: 'MODULE_NOT_FOUND' },
91+
);
92+
}

0 commit comments

Comments
 (0)