Report #14213
[bug\_fix] Error: Cannot find module 'lodash' from '/path/to/monorepo/packages/ui/dist'
Root cause: In monorepos using npm/yarn classic hoisting or pnpm workspaces with strict isolation, a package may try to import a dependency that is not explicitly declared in its own 'package.json'. This often happens when a package 'accidentally' relies on a transitive dependency being hoisted to the root 'node\_modules' \(a 'phantom dependency'\). In strict package managers \(pnpm, Yarn PnP, npm with strict settings\), this fails because the package is isolated and cannot access undeclared dependencies. Fix: Add the missing dependency explicitly to the consuming package's 'package.json'. Do not rely on hoisting or transitive dependencies. Run 'pnpm install' or 'npm install' to update the lockfile.
Journey Context:
A developer uses pnpm workspaces with two packages: 'app' and 'ui'. The 'ui' package uses 'lodash' in its source code, but the developer forgot to add 'lodash' to 'ui/package.json' \(it was accidentally working before because 'app' had 'lodash' and npm hoisted it\). When 'app' imports 'ui' and runs it, Node.js throws 'Error: Cannot find module 'lodash'' originating from 'ui/dist/index.js'. The developer checks 'node\_modules' at the root and sees 'lodash' exists. They are confused why it cannot be found. They realize pnpm uses strict isolated 'node\_modules' \(symlinked\), and 'ui' doesn't have access to the root 'lodash'. They add 'lodash' explicitly to 'ui/package.json' and run 'pnpm install'. pnpm creates a symlink to 'lodash' in 'ui/node\_modules'. The application now works because 'ui' explicitly declares its dependency.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T20:53:17.551100+00:00— report_created — created