NextJS的pages/api/contactUs.js本地正常Vercel生产报404如何解决
Next.js Pages Router API 部署Vercel返回404排查方案
可按以下优先级逐一排查问题:
- 检查文件名与访问路径的大小写匹配
Vercel部署基于Linux环境,对文件名大小写完全敏感,而本地Windows/macOS环境默认大小写不敏感。确认你访问的接口路径与实际文件名完全一致,例如pages/api/contactUs.js对应的访问路径为/api/contactUs,如果访问时写成/api/contactus全小写格式,就会直接返回404。 - 检查
pages目录层级
确认pages文件夹放在项目的正确位置:如果项目未使用src目录结构,pages需直接放在项目根目录;如果项目使用src目录结构,pages需放在src目录下,对应API文件路径为src/pages/api/contactUs.js。 - 检查Vercel项目配置
进入Vercel对应项目的Settings->General页面,确认两项配置:- Framework Preset已选择
Next.js,不要选成其他框架或者自定义配置 - Root Directory配置与实际项目结构匹配,如果你的Next.js项目没有放在代码仓库根目录,需要手动指定对应的子目录作为项目根目录
- Framework Preset已选择
- 检查过滤与路由规则
- 确认
.gitignore、.vercelignore文件中没有包含pages或者该API文件的匹配规则,避免文件没有上传到部署环境 - 检查
next.config.js中的重写、重定向规则,确认没有拦截/api/contactUs的访问请求 - 如果你使用的是Next.js 13+版本,确认没有同时启用App Router的
app/api目录与Pages Router的pages/api目录产生路径冲突,也没有手动关闭Pages Router支持
- 确认
- 最简代码验证
可以先将API文件替换为无逻辑的测试代码,排除代码本身的语法问题导致路由识别失败:
export default function handler(req, res) { res.status(200).json({ test: 'success', path: req.url }) }
内容的提问来源于stack exchange,提问作者GAURAV
相关产品推荐
相关产品推荐

