Next-i18Next localePath配置在构建时失效问题求助
next-i18next路径重复构建错误与Vercel部署修复
问题根源
- 本地构建路径重复:你用
path.resolve()生成的绝对路径,被next-i18next内部的路径处理逻辑重复拼接——它会把这个绝对路径再拼到项目根路径后面,就出现了错误里的双重绝对路径。 - Vercel生产环境路径失效:直接写
./public/static/locales在Vercel上不行,是因为Vercel部署时会把public目录作为静态资源的根目录,最终路径里不会包含public这一层。
修复代码
直接放弃path.resolve(),用相对路径,同时适配本地和Vercel的环境差异:
const NextI18Next = require("next-i18next").default; module.exports = new NextI18Next({ defaultLanguage: "fr", otherLanguages: ["en"], // 本地用这个路径,Vercel部署时自动识别public为根目录,也能正确找到 localePath: "./public/static/locales", });
如果还是担心Vercel的兼容性,可以加环境判断做适配:
const NextI18Next = require("next-i18next").default; module.exports = new NextI18Next({ defaultLanguage: "fr", otherLanguages: ["en"], localePath: process.env.NODE_ENV === "production" ? "./static/locales" : "./public/static/locales", });
必做检查
- 确认
public/static/locales/fr和public/static/locales/en目录存在,且里面有对应的翻译JSON文件(比如common.json)。 - Vercel部署时,确保
public目录没有被.gitignore或Vercel配置排除。
内容的提问来源于stack exchange,提问作者Matteo Robert
相关产品推荐
相关产品推荐

