[Bug?]: PnP fails to resolve dynamic require from CJS
See original GitHub issueSelf-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.
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:5 (3 by maintainers)

Top Related StackOverflow Question
This is fixed by https://github.com/yarnpkg/berry/pull/3667, you can verify by running
Ahahaha, that’s why I ended up filing #4045!
Any reason
yarn set version canarydoesn’t doyarn installafter?