app deploy fails packaging @prisma/adapter-pg in a pnpm monorepo (ENOENT realpath /tmp/node_modules/...)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- next.js, typescript
- Domain
- build-system, cli
Research direction
Start with the packaging path in dist/lib/app/app-provider.js around deployApp line 186, then trace its callers through dist/controllers/app.js and reproduce with the documented app deploy command. Done means the local packaging step completes without ENOENT for @prisma/adapter-pg and deployment works with both hoisted and isolated pnpm linkers.
Written by the indexing model from the issue text.
Description
Summary
app deploy fails during local build packaging for a Next.js app in a pnpm monorepo that depends on @prisma/adapter-pg, with:
ENOENT: no such file or directory, realpath '/tmp/node_modules/.pnpm/@prisma+adapter-pg@7.8.0/node_modules/@prisma/adapter-pg'
Reproduced identically on 3.0.0-beta.28 (the latest npm tag) and 3.0.0-dev.129.1 (the newest available dev build as of 2026-07-17), via both bunx @prisma/cli@latest and a directly pnpm add-installed @prisma/cli binary (ruling out bunx caching as a cause).
Environment
- pnpm workspace monorepo, Next.js 16.2.10 (Turbopack) app as the deploy target
- App depends on
@prisma/adapter-pg(driver adapter), marked innext.config.ts'sserverExternalPackages(so Next does not bundle it — standard practice for native/runtime-only packages) - Tested with pnpm's
node-linkerset to bothhoistedandisolated— the exact failure differs by linker mode (see below), but a working deploy was never achieved in either mode pnpm run build(a plain, non-Compute-CLI invocation) succeeds fully in both linker modes once the app's own dependency graph is otherwise correct — this is specifically aprisma-cli app deploypackaging-step failure, not a Next.js build failure
Steps to reproduce (minimal shape)
- A pnpm monorepo with
node-linker=hoistedin.npmrc - An app package that depends on
@prisma/adapter-pg, withnext.config.ts'sserverExternalPackages: ["@prisma/adapter-pg", "pg"] prisma-cli project link <project-id>from the app directoryprisma-cli app deploy --project <project-id> --branch main --framework nextjs --yes
Observed behavior
- Under
node-linker=hoisted:next build(run directly) succeeds.prisma-cli app deploy's local build step fails withENOENT: no such file or directory, realpath '/tmp/node_modules/@prisma/adapter-pg'— a bare/tmp/node_modules/...path, one directory level shallower than where the actual staging appears to happen, suggesting an off-by-one in the temp-directory path used during artifact-symlink materialization. - Under
node-linker=isolated(the standard pnpm virtual-store layout): once the app's own build succeeds cleanly (confirmed via directpnpm run build),app deployfails with a more specific variant:ENOENT: no such file or directory, realpath '/tmp/node_modules/.pnpm/@prisma+adapter-pg@7.8.0/node_modules/@prisma/adapter-pg'— again missing the actual staging-directory path segment beforenode_modules.
What I ruled out
bunx's own caching/wrapper behavior — reproduced identically via a directlypnpm add -D @prisma/cli-installed binary invoked withoutbunxat all.- Turbopack/Next.js workspace-root inference — a separate, real issue was found and fixed on the app side (pinning
turbopack.root), but the packaging-step failure above persists with or without that fix, in both linker modes. - Missing/stale build artifacts in the monorepo — confirmed via a clean checkout in a separate git worktree, with dependencies freshly installed, that the app itself builds successfully; only
app deploy's own post-build packaging step fails.
Trace
Error: ENOENT: no such file or directory, realpath '/tmp/node_modules/@prisma/adapter-pg'
at Object.deployApp (file:///tmp/bunx-.../node_modules/@prisma/cli/dist/lib/app/app-provider.js:186:36)
at async runSingleAppDeploy (file:///tmp/bunx-.../node_modules/@prisma/cli/dist/controllers/app.js:357:23)
at async runCommand (file:///tmp/bunx-.../node_modules/@prisma/cli/dist/shell/command-runner.js:27:50)
at async Command.<anonymous> (file:///tmp/bunx-.../node_modules/@prisma/cli/dist/commands/app/index.js:85:3)
Happy to provide more detail or a minimal reproduction repo if useful.
- Dominant language
- TypeScript
- Stars
- 21
- Forks
- 2
- Avg merge
- 23h 23m
- Merged PRs (30d)
- 40
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from prisma/prisma-cli
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
prisma/prisma-cli#252 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
prisma/prisma-cli#246 ·
-
installation issue Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
prisma/prisma-cli#237 · 2 reactions ·
-
Difficulty 4/5 3-5 days Newbie friendliness 52/100
prisma/prisma-cli#205 · 3 comments ·
All issues in prisma/prisma-cli
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
fullcalendar/fullcalendar#8106 ·