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 <benjamingr@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
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

+7-5
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-
return Resolve(env, "./" + pjson.main, search);
584+
return Resolve(env, "./" + pjson.main, search, IgnoreMain);
583585
}
584-
return Resolve(env, pjson.main, search);
586+
return Resolve(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
const size_t limit = specifier.find('/');
598600
const size_t spec_len =
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Flags: --experimental-modules
2+
/* eslint-disable required-modules */
3+
import assert from 'assert';
4+
import main from '../fixtures/es-modules/pjson-main';
5+
6+
assert.strictEqual(main, 'main');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = 'main';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"main": "main.js"
3+
}

0 commit comments

Comments
 (0)