Skip to content

Commit 7748865

Browse files
guybedfordBridgeAR
authored andcommitted
module: fix main lookup regression from #18728
PR-URL: #18788 Refs: #18728 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 61e3e6d commit 7748865

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
@@ -544,7 +544,7 @@ const PackageConfig& GetPackageConfig(Environment* env,
544544
}
545545

546546
auto entry = env->package_json_cache.emplace(path,
547-
PackageConfig { Exists::Yes, IsValid::Yes, has_main, "" });
547+
PackageConfig { Exists::Yes, IsValid::Yes, has_main, main_std });
548548
return entry.first->second;
549549
}
550550

@@ -585,13 +585,15 @@ Maybe<URL> ResolveMain(Environment* env, const URL& search) {
585585
GetPackageConfig(env, pkg.ToFilePath());
586586
// Note invalid package.json should throw in resolver
587587
// currently we silently ignore which is incorrect
588-
if (!pjson.exists || !pjson.is_valid || !pjson.has_main) {
588+
if (pjson.exists == Exists::No ||
589+
pjson.is_valid == IsValid::No ||
590+
pjson.has_main == HasMain::No) {
589591
return Nothing<URL>();
590592
}
591593
if (!ShouldBeTreatedAsRelativeOrAbsolutePath(pjson.main)) {
592-
return Resolve(env, "./" + pjson.main, search);
594+
return Resolve(env, "./" + pjson.main, search, IgnoreMain);
593595
}
594-
return Resolve(env, pjson.main, search);
596+
return Resolve(env, pjson.main, search, IgnoreMain);
595597
}
596598

597599
Maybe<URL> ResolveModule(Environment* env,
@@ -602,7 +604,7 @@ Maybe<URL> ResolveModule(Environment* env,
602604
do {
603605
dir = parent;
604606
Maybe<URL> check =
605-
Resolve(env, "./node_modules/" + specifier, dir, IgnoreMain);
607+
Resolve(env, "./node_modules/" + specifier, dir, CheckMain);
606608
if (!check.IsNothing()) {
607609
const size_t limit = specifier.find('/');
608610
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)