Short answer
Vercel says this error almost always means the casing in an import doesn’t exactly match the filename. Your Mac or Windows machine ignores the difference by default; Vercel’s Linux build doesn’t. Find the path in the Build Logs and make the import and the filename match exactly. If Git missed a case-only rename, rename through a temporary name with git mv. Otherwise check for a package missing from package.json or a wrong relative path.
Casing first, then the other two causes
01
The import’s casing doesn’t match the filename
“Vercel builds run on a case-sensitive Linux filesystem, where those are two different paths.” Vercel, Resolve a module not found error
Windows and macOS treat Header.tsx and header.tsx as the same file by default. Vercel builds on a case-sensitive Linux filesystem, where they are two different paths, so an import that works locally fails there.
02
Find the exact path in the Build Logs
“Compare that path, character by character, against the real filename in your repository (not your local file explorer, which may hide the mismatch)” Vercel, Resolve a module not found error
Open the deployment in the Vercel dashboard, select Build Logs and find the Module not found: Can’t resolve line. Check the path it names against the filename in your repository, not in your file explorer.
03
Git never recorded a case-only rename
“Commit both steps together, and Git records the casing change as an explicit rename that Vercel's case-sensitive build filesystem will match correctly.” Vercel, Resolve a module not found error
If you renamed header.tsx to Header.tsx, Git on a case-insensitive system often doesn’t register a change, so Vercel still gets the old name. Set core.ignorecase to false, then rename through a temporary filename in two git mv steps and commit both together.
git config core.ignorecase false git mv header.tsx header-tmp.tsx git mv header-tmp.tsx Header.tsx04
A package installed only on your machine
“a package installed only locally never reaches Vercel's build.” Vercel, Resolve a module not found error
If the path that won’t resolve is a package name rather than a local file, check that it’s listed in package.json and that the change is committed.
05
A wrong relative path
“A path that resolves locally in an IDE with path aliases configured can still be wrong once Vercel builds from a clean checkout.” Vercel, Resolve a module not found error
Count the ../ segments against the file’s real folder depth. If the path only works in your editor because of path aliases, it can still fail on a clean checkout.
Checked against the vendor’s docs on : Vercel Knowledge Base: How do I resolve a module not found error?.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Bolt or Lovable build fails on deploy · Vercel environment variables undefined · Vercel function 504 timeout · Vercel 413 payload too large