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

Next.js 13 i18n路由报错:Incorrect locale information provided

解决Next.js i18n路由报错"Incorrect locale information provided"

下面是针对该报错的具体排查和修复步骤:

  • 检查next.config.js的i18n配置准确性
    确保配置中的locales列表、defaultLocale没有拼写错误,格式符合规范(比如en-US而非en_us),示例正确配置:

    module.exports = {
      i18n: {
        locales: ['en-US', 'fr', 'zh-CN'],
        defaultLocale: 'en-US',
      },
    }
    

    注意:locales中的值必须和页面文件夹命名(比如pages/fr)或动态路由的locale参数完全一致。

  • 验证数据获取函数的locale处理逻辑
    在getStaticProps或getServerSideProps中,确保正确接收并使用context.locale参数,不要手动硬编码locale值。比如:

    export async function getStaticProps({ locale }) {
      const data = await fetch(`https://api.example.com/data?locale=${locale}`)
      return { props: { data } }
    }
    

    如果使用getStaticPaths,要确保paths数组中包含所有配置的locale路径,比如:

    export async function getStaticPaths({ locales }) {
      return {
        paths: locales.map(locale => ({
          params: { id: '1' },
          locale,
        })),
        fallback: false,
      }
    }
    
  • 排查自定义App组件的干扰
    检查_app.js/_app.tsx中是否有修改router.locale或覆盖locale相关属性的代码,比如错误地在useEffect中修改路由的locale值,导致Next.js收到不合法的locale信息。

  • 检查中间件对locale的影响
    如果项目中使用了自定义路由中间件(middleware.js/middleware.ts)或第三方国际化中间件,确认它们没有错误修改请求的next-url或accept-language头,导致Next.js无法正确识别locale。

  • 清除Next.js缓存并重新构建
    删除项目根目录下的.next文件夹和node_modules/.cache目录,然后执行npm run build或yarn build重新构建,避免旧配置缓存引发的问题。

  • 核对Next.js版本兼容性
    某些旧版本的Next.js在i18n路由功能上存在已知bug,建议升级到最新的稳定版(比如v13+),确保和官方文档的版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:34:59