-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Self-service
- I'd be willing to implement a fix
Describe the bug
Attempting to use import()
from a CJS file fails under PnP despite Node being loaded with --experimental-loader=.../.pnp.loader.mjs
. This appears to be a gap in the recent support added for the experimental ESM loader as the issue is not present when the script is loaded as ESM.
To reproduce
https://github.com/kherock/pnp-exports-map-import-bug
You can reproduce the error by running the following after checking out:
$ yarn node test.js
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'my-package' imported from /Users/herockk/Workspaces/pnp-exports-map-import/test.js
The failure disappears when loading the script as .mjs:
$ yarn node test.mjs
(node:58073) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[Module: null prototype] { default: { foo: 'bar' }, foo: 'bar' }
The error is not present with nodeLinker: node-modules
set in .yarnrc.yml
.
Environment
System:
OS: macOS 11.5.2
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Binaries:
Node: 16.9.1 - /private/var/folders/9f/kl_c86q5651fqmhmzf63jb0x5t_d9j/T/xfs-7d04f2cf/node
Yarn: 3.1.0 - /private/var/folders/9f/kl_c86q5651fqmhmzf63jb0x5t_d9j/T/xfs-7d04f2cf/yarn
npm: 7.21.1 - ~/.volta/tools/image/node/16.9.1/bin/npm
Additional context
I'm running Next.js 12 which generates server-side code with imports in the form of dynamic import()
calls. The package I'm trying to import is @react-hook/passive-layout-effect
which has a package.json in a format similar to the reproduction linked above. NextJS doesn't support running under a project with { "type": "module" }
yet, so the workaround of loading the script as ESM isn't an option.