Skip to content

Commit 58646ea

Browse files
zhmushantargos
authored andcommitted
loader: make require.resolve throw for unknown builtin modules
Fixes: #43274 PR-URL: #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 02009b7 commit 58646ea

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

lib/internal/modules/cjs/loader.js

+13-7
Original file line numberDiff line numberDiff line change
@@ -784,19 +784,19 @@ Module._load = function(request, parent, isMain) {
784784
}
785785
}
786786

787-
const filename = Module._resolveFilename(request, parent, isMain);
788-
if (StringPrototypeStartsWith(filename, 'node:')) {
787+
if (StringPrototypeStartsWith(request, 'node:')) {
789788
// Slice 'node:' prefix
790-
const id = StringPrototypeSlice(filename, 5);
789+
const id = StringPrototypeSlice(request, 5);
791790

792791
const module = loadNativeModule(id, request);
793792
if (!module?.canBeRequiredByUsers) {
794-
throw new ERR_UNKNOWN_BUILTIN_MODULE(filename);
793+
throw new ERR_UNKNOWN_BUILTIN_MODULE(request);
795794
}
796795

797796
return module.exports;
798797
}
799798

799+
const filename = Module._resolveFilename(request, parent, isMain);
800800
const cachedModule = Module._cache[filename];
801801
if (cachedModule !== undefined) {
802802
updateChildren(parent, cachedModule, true);
@@ -858,9 +858,15 @@ Module._load = function(request, parent, isMain) {
858858
};
859859

860860
Module._resolveFilename = function(request, parent, isMain, options) {
861-
if (StringPrototypeStartsWith(request, 'node:') ||
862-
(NativeModule.canBeRequiredByUsers(request) &&
863-
NativeModule.canBeRequiredWithoutScheme(request))) {
861+
if (
862+
(
863+
StringPrototypeStartsWith(request, 'node:') &&
864+
NativeModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
865+
) || (
866+
NativeModule.canBeRequiredByUsers(request) &&
867+
NativeModule.canBeRequiredWithoutScheme(request)
868+
)
869+
) {
864870
return request;
865871
}
866872

test/parallel/test-require-resolve.js

+10
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('node:test'), 'node:test');
86+
assert.strictEqual(require.resolve('node:fs'), 'node:fs');
87+
88+
assert.throws(
89+
() => require.resolve('node:unknown'),
90+
{ code: 'MODULE_NOT_FOUND' },
91+
);
92+
}

0 commit comments

Comments
 (0)