Report #29459
[bug\_fix] PNPM Error: Cannot find module 'lodash' \(or any package\) despite being in package.json / strict node\_modules isolation
Add \`shamefully-hoist=true\` to \`.npmrc\` in the project root to hoist all dependencies to root node\_modules, or use \`node-linker=hoisted\` to completely emulate npm's flat node\_modules. Alternatively, explicitly add the missing package as a direct dependency.
Journey Context:
Developer migrates a working npm project to PNPM for disk space savings. After running \`pnpm install\`, they run \`pnpm dev\` or \`node index.js\` and the app crashes with 'Error: Cannot find module lodash'. They check \`node\_modules\` and see lodash is present in \`node\_modules/.pnpm/lodash@version/node\_modules/lodash\` but not at the root. They realize PNPM uses a strict node\_modules structure \(content-addressable store with symlinks/hardlinks\) where only direct dependencies are directly accessible in a module's node\_modules. The app or a tool \(like an old webpack config\) is trying to \`require\('lodash'\)\` even though it's only a transitive dependency of another package, or it expects a flat tree. The developer adds \`shamefully-hoist=true\` to \`.npmrc\`, which tells PNPM to lift all dependencies to the root node\_modules \(like npm/yarn classic\), breaking strict isolation but restoring compatibility with legacy tooling that relies on hoisting or implicit peer deps. After running \`pnpm install\` again, a flat node\_modules is created and the module resolution succeeds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:50:17.888256+00:00— report_created — created