app deploy fails packaging @prisma/adapter-pg in a pnpm monorepo (ENOENT realpath /tmp/node_modules/...)

Open
#121 0 comments 0 reactions 0 assignees View on GitHub

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 in next.config.ts's serverExternalPackages (so Next does not bundle it — standard practice for native/runtime-only packages)
  • Tested with pnpm's node-linker set to both hoisted and isolated — 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 a prisma-cli app deploy packaging-step failure, not a Next.js build failure

Steps to reproduce (minimal shape)

  1. A pnpm monorepo with node-linker=hoisted in .npmrc
  2. An app package that depends on @prisma/adapter-pg, with next.config.ts's serverExternalPackages: ["@prisma/adapter-pg", "pg"]
  3. prisma-cli project link <project-id> from the app directory
  4. prisma-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 with ENOENT: 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 direct pnpm run build), app deploy fails 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 before node_modules.

What I ruled out

  • bunx's own caching/wrapper behavior — reproduced identically via a directly pnpm add -D @prisma/cli-installed binary invoked without bunx at 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from prisma/prisma-cli

All issues in prisma/prisma-cli

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.