Next.js 13.2.1部署环境API路由404错误解决咨询
针对你遇到的本地API路由正常、部署后/api/md返回404的问题,按以下步骤排查:
检查部署平台的文件识别情况
查看部署平台的构建日志,确认src/pages/api/md/index.ts是否被正常打包。部分平台默认支持src/pages目录,但如果部署配置中排除了该目录,会导致API路由缺失。排查路径大小写问题
服务器环境多为Linux(大小写敏感),本地Windows/macOS默认不敏感。确认部署后的目录、文件名大小写与本地完全一致(比如md目录不能写成MD),大小写不匹配会直接导致404。验证next.config.js配置
确保pageExtensions包含API路由的文件扩展名,正确配置示例:/** @type {import('next').NextConfig} */ const nextConfig = { pageExtensions: ['ts', 'tsx', 'js', 'jsx'], } module.exports = nextConfig同时检查是否存在
rewrites或redirects配置,避免意外覆盖/api/md路由。确认构建命令正确性
部署时必须使用next build命令生成生产构建包,若自定义了构建命令(比如跳过了某些步骤),可能导致API路由未被编译。检查API路由代码的环境兼容性
本地正常不代表部署环境兼容:- 确认代码中用到的环境变量在部署平台已正确配置,缺失变量可能导致路由初始化失败。
- 在API路由中添加简单日志(如
console.log('API md route loaded')),查看部署平台的服务器日志,确认该路由是否被加载。
清理部署缓存并重新部署
部分平台会缓存旧构建结果,尝试清理缓存后重新触发部署,确保最新的API路由被打包部署。确认Pages Router是否被正常启用
你使用的是Pages Router(src/pages/api目录),Next.js 13默认兼容Pages Router,但如果next.config.js中有experimental.appDir: true配置,需确保Pages Router未被禁用(默认不会)。
内容的提问来源于stack exchange,提问作者DEVjohnFE

