接入next-i18next后Vercel部署站点全页返回404,本地运行正常如何解决?
问题根因
你遇到的本地运行正常、Vercel部署后404+500的问题,核心是next-i18next的配置或者资源在Vercel的服务端运行环境加载失败,常见原因如下:
- next.config.js的i18n配置不完整,缺少必要参数导致Vercel边缘路由无法匹配国际化路径
- public/locales翻译资源目录被.gitignore过滤,部署后服务端加载翻译文件失败触发500错误,连带路由匹配失败返回404
- 使用了Next.js 13+的App Router,而next-i18next仅支持Pages Router,路由模式不兼容
- 构建配置错误,比如配置了
output: 'export'静态导出,next-i18next不支持纯静态导出的部署模式
解决方案
- 补全next.config.js的i18n配置,参考如下:
const { i18n } = require("./next-i18next.config"); module.exports = { i18n: { locales: ["en", "fr", "nl-NL", "nl-BE", "de", "ja"], defaultLocale: "ja", localeDetection: false, // 禁用自动区域检测,避免Vercel路由匹配冲突 }, // 不要添加output: 'export'配置,会导致国际化功能失效 }
- 检查项目.gitignore文件,确保没有过滤public/locales目录,该目录下的翻译文件结构必须符合
public/locales/[语言编码]/[命名空间].json的规范 - 确认路由模式:如果使用Next.js 13+ App Router,替换国际化方案为next-intl;如果使用Pages Router,确保next-i18next版本和Next.js版本兼容,推荐next@12.x搭配next-i18next@13.x版本
- 检查Vercel构建配置,确保构建命令为默认的
next build,不要自定义输出目录 - 若上述操作后问题仍存在,进入Vercel项目部署详情的「Functions」标签查看服务端运行日志,定位具体的资源加载错误
内容的提问来源于stack exchange,提问作者Ryosuke Hujisawa
相关产品推荐
相关产品推荐

