next build, TypeScript, and static page generation all finish successfully.
After build completion, Vercel marks the deployment as Error during finalization.
Exact error from the deployment record:
ENOENT: no such file or directory, lstat '/vercel/path0/.next/routes-manifest-deterministic.json'
Why this looks wrong:
The app lives in the web/ subdirectory.
The project is configured with rootDirectory = web.
The build output is under /vercel/path0/web/.next, but finalization appears to be looking under /vercel/path0/.next at repo root.
Additional context:
Workspace path-length guard passes with zero filename/path violations.
Local app build also passes.
Recent production deployments for this project are failing with the same post-build behavior.
Is this a known Vercel / Next.js subdirectory-project bug around routes-manifest-deterministic.json lookup during deployment finalization? If so, what is the recommended workaround?
So I’d treat this as a post-build/finalization path issue before changing the app code. If next build and static generation already complete successfully, the app build itself is probably not the failing layer.
A good isolation test is to bypass Git Integration once and deploy a prebuilt output from the app root:
cd web
vercel pull --yes --environment=production
vercel build --prod
vercel deploy --prebuilt --archive=tgz --prod
If that succeeds, it strongly suggests the project code is fine and the failure is specific to Git Integration + Root Directory finalization.
I’d also double-check these project settings:
Root Directory: web
Framework Preset: Next.js
Output Directory: not manually overridden
Build Command: not manually forcing output outside web
Vercel’s build settings docs mention that the Root Directory setting applies to the app Vercel builds and that framework output directories are normally auto-detected:
If the prebuilt deploy also fails with the same missing /vercel/path0/.next/... path, then the next useful detail would be the vercel build --debug output, with any secrets removed.