You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vite+i18next后端加载语言文件时返回HTML而非JSON

问题分析与解决方案

核心问题是文件实际路径和i18next请求路径不匹配:

  • 你把翻译文件放在了public/en/translation.json
  • 但你的backend配置的loadPath是/locales/{{lng}}/{{ns}}.json,导致i18next请求的是/locales/en/translation.json,这个路径下没有对应的静态文件,开发服务器就会返回SPA的入口HTML文件(这是单页应用开发服务器的默认行为:找不到静态资源时返回index.html)。

而favicon.png能正常加载,是因为它放在public根目录,请求路径/favicon.png和文件实际位置完全对应。

两种解决办法选其一:

办法1:调整文件结构(推荐,符合i18next常规规范)

在public目录下新建locales文件夹,然后把各语言的翻译文件放到对应子目录里:

public/
└── locales/
    ├── en/
    │   └── translation.json
    └── [其他语言目录]/
        └── translation.json

这样请求路径/locales/en/translation.json就能匹配到对应的文件了。

办法2:修改backend的loadPath配置

如果不想调整文件结构,直接修改i18n初始化配置里的backend.loadPath:

backend: {
  overrideMimeType: 'application/json',
  loadPath: '/{{lng}}/{{ns}}.json' // 去掉配置里的locales/前缀
}

这样i18next会请求/en/translation.json,正好对应你现在的文件位置public/en/translation.json。

你可以直接在浏览器地址栏输入对应的JSON文件路径(比如http://localhost:5173/en/translation.json或/locales/en/translation.json,取决于你选的方案),如果能正常显示JSON内容,就说明路径配置正确了。

内容的提问来源于stack exchange,提问作者Benny Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:45:01