Open isaacs opened 1 year ago
Also interesting note: it doesn't raise an error if there's a index.js
in the folder, because in that case, it has a load target.
So the problem is really not the package.json not being findable, or the folder not being findable, but the package at node_modules/whatever
not being something that Node can load successfully.
in master build
> node/out/Debug/node -e 'import("whatever")'
node:internal/modules/esm/resolve:186
const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
^
Error: Cannot find package '/Users/himself65/Code/node-issue-49674/node_modules/whatever/package.json' imported from /Users/himself65/Code/node-issue-49674/[eval]
at legacyMainResolve (node:internal/modules/esm/resolve:186:26)
at packageResolve (node:internal/modules/esm/resolve:771:14)
at moduleResolve (node:internal/modules/esm/resolve:833:20)
at defaultResolve (node:internal/modules/esm/resolve:1038:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:376:12)
at ModuleLoader.resolve (node:internal/modules/esm/loader:345:25)
at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:221:38)
at ModuleLoader.import (node:internal/modules/esm/loader:308:34)
at importModuleDynamically (node:internal/process/execution:89:31)
at importModuleDynamicallyWrapper (node:internal/vm/module:431:21) {
code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v21.0.0-pre
Please see https://github.com/nodejs/node/pull/49728
this is truly misleading
I just ran into this slightly cryptic message with a module-only package build. For future reference:
"exports": {
".": {
"import": "./dist/module.js",
"require": "./dist/module.js"
}
},
fixes it for such a package.
Version
>=20.5.0
Platform
Darwin moxy.lan 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul 5 22:22:05 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6000 arm64
Subsystem
modules
What steps will reproduce the bug?
How often does it reproduce? Is there a required condition?
Happens when a package.json exists, in a package folder that exists, but which does not define a main or
'.'
export.What is the expected behavior? Why is that the expected behavior?
The previous behavior was:
However, this is also not great, because it implies that the folder could not be found, when it clearly can be found.
What do you see instead?
Additional information
The confusing bit is that it's saying it can't "find" the package.json file, which clearly does exist and is a valid package.json (albeit not one that defines a valid importable package).
A better error message would be something like: