Skip to content

Commit 1b0d145

Browse files
committed
module: refactor to use normalizeRequirableId in the CJS module loader
`BuiltinModule.normalizeRequirableId()` was introduced in nodejs#47779 to fix a bug in the require function of SEAs and Snapshots, so that built-in modules with the `node:` scheme could be required correctly. This change makes more use of this API instead of `BuiltinModule.canBeRequiredByUsers()` and `BuiltinModule.canBeRequiredWithoutScheme()` to reduce chances of such bugs. Signed-off-by: Darshan Sen <raisinten@gmail.com>
1 parent 2de10f5 commit 1b0d145

2 files changed

Lines changed: 9 additions & 22 deletions

File tree

lib/internal/bootstrap/realm.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -286,17 +286,16 @@ class BuiltinModule {
286286
}
287287

288288
static normalizeRequirableId(id) {
289-
let normalizedId = id;
290289
if (StringPrototypeStartsWith(id, 'node:')) {
291-
normalizedId = StringPrototypeSlice(id, 5);
292-
}
293-
294-
if (!BuiltinModule.canBeRequiredByUsers(normalizedId) ||
295-
(id === normalizedId && !BuiltinModule.canBeRequiredWithoutScheme(normalizedId))) {
296-
return undefined;
290+
const normalizedId = StringPrototypeSlice(id, 5);
291+
if (BuiltinModule.canBeRequiredByUsers(normalizedId)) {
292+
return normalizedId;
293+
}
294+
} else if (BuiltinModule.canBeRequiredWithoutScheme(id)) {
295+
return id;
297296
}
298297

299-
return normalizedId;
298+
return undefined;
300299
}
301300

302301
static isBuiltin(id) {

lib/internal/modules/cjs/loader.js

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -792,12 +792,7 @@ if (isWindows) {
792792
}
793793

794794
Module._resolveLookupPaths = function(request, parent) {
795-
if ((
796-
StringPrototypeStartsWith(request, 'node:') &&
797-
BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
798-
) || (
799-
BuiltinModule.canBeRequiredWithoutScheme(request)
800-
)) {
795+
if (BuiltinModule.normalizeRequirableId(request)) {
801796
debug('looking for %j in []', request);
802797
return null;
803798
}
@@ -989,14 +984,7 @@ Module._load = function(request, parent, isMain) {
989984
};
990985

991986
Module._resolveFilename = function(request, parent, isMain, options) {
992-
if (
993-
(
994-
StringPrototypeStartsWith(request, 'node:') &&
995-
BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
996-
) || (
997-
BuiltinModule.canBeRequiredWithoutScheme(request)
998-
)
999-
) {
987+
if (BuiltinModule.normalizeRequirableId(request)) {
1000988
return request;
1001989
}
1002990

0 commit comments

Comments
 (0)