Skip to content

Commit 39e032f

Browse files
guybedfordMylesBorins
authored andcommitted
module: fix main lookup regression from #18728
Backport-PR-URL: #18923 PR-URL: #18788 Refs: #18728 Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent f3e3429 commit 39e032f

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

‎src/module_wrap.cc‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ const PackageConfig& GetPackageConfig(Environment* env,
534534
}
535535

536536
auto entry = env->package_json_cache.emplace(path,
537-
PackageConfig{Exists::Yes, IsValid::Yes, has_main, "" });
537+
PackageConfig{Exists::Yes, IsValid::Yes, has_main, main_std });
538538
return entry.first->second;
539539
}
540540

@@ -575,13 +575,15 @@ Maybe<URL> ResolveMain(Environment* env, const URL& search){
575575
GetPackageConfig(env, pkg.ToFilePath());
576576
// Note invalid package.json should throw in resolver
577577
// currently we silently ignore which is incorrect
578-
if (!pjson.exists || !pjson.is_valid || !pjson.has_main){
578+
if (pjson.exists == Exists::No ||
579+
pjson.is_valid == IsValid::No ||
580+
pjson.has_main == HasMain::No){
579581
return Nothing<URL>();
580582
}
581583
if (!ShouldBeTreatedAsRelativeOrAbsolutePath(pjson.main)){
582-
returnResolve(env, "./" + pjson.main, search);
584+
returnResolve(env, "./" + pjson.main, search, IgnoreMain);
583585
}
584-
returnResolve(env, pjson.main, search);
586+
returnResolve(env, pjson.main, search, IgnoreMain);
585587
}
586588

587589
Maybe<URL> ResolveModule(Environment* env,
@@ -592,7 +594,7 @@ Maybe<URL> ResolveModule(Environment* env,
592594
do{
593595
dir = parent;
594596
Maybe<URL> check =
595-
Resolve(env, "./node_modules/" + specifier, dir, IgnoreMain);
597+
Resolve(env, "./node_modules/" + specifier, dir, CheckMain);
596598
if (!check.IsNothing()){
597599
constsize_t limit = specifier.find('/');
598600
constsize_t spec_len =
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Flags: --experimental-modules
2+
/* eslint-disable required-modules */
3+
importassertfrom'assert';
4+
importmainfrom'../fixtures/es-modules/pjson-main';
5+
6+
assert.strictEqual(main,'main');
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports='main';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"main": "main.js"
3+
}

0 commit comments

Comments
(0)