Report #17453
[bug\_fix] Error: Your application tried to access lodash, but it isn't declared in your dependencies - see https://help.yarnpkg.com/faq/undeclared-dependency-check
Add the missing dependency explicitly to the workspace package's package.json, or use \`packageExtensions\` in \`.yarnrc.yml\` to patch transitive dependencies that forgot to declare peer dependencies. Root cause: Yarn 2\+ Plug'n'Play \(PnP\) uses \`.pnp.cjs\` to map imports instead of \`node\_modules\`, strictly enforcing that packages can only import their explicit dependencies \(no phantom/hoisted dependencies allowed\).
Journey Context:
Developer migrates from Yarn 1 to Yarn 2 \(Berry\). Running \`yarn install\` creates a \`.pnp.cjs\` file instead of \`node\_modules\`. Starting the application fails with an error stating that \`lodash\` is not declared in dependencies, even though the code imports it successfully in Yarn 1. The developer realizes that Yarn 1 was "hoisting" \`lodash\` from a transitive dependency to the root \`node\_modules\`, allowing the app to "phantom" import it. Yarn 2 PnP strictly forbids this. The developer uses \`yarn info lodash\` to trace which package should have declared it, then adds \`lodash\` explicitly to the app's \`package.json\`. Alternatively, for a package with missing peer declarations, they patch it via \`packageExtensions\` in \`.yarnrc.yml\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T05:23:43.903693+00:00— report_created — created