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

next-intl Link组件href仅接受"/"和"/pathnames"字符串值的异常问题

next-intl Link组件仅支持"/"和"/pathnames"路径的问题解决

这不是next-intl的Bug,问题出在你的pathnames配置缺失了目标路径,导致类型系统只允许已配置的路径作为Link的href值。

next-intl的本地化导航组件(包括createLocalizedPathnamesNavigation生成的Link)会严格基于i18nconfig.ts中定义的pathnames生成类型约束,只有在该对象中声明过的路径才能被合法传入href属性。

解决步骤:

  1. 打开i18nconfig.ts,在pathnames对象中添加你需要的路径配置:

    // i18nconfig.ts
    import { Pathnames } from 'next-intl/navigation';
    import { locales } from './your-locale-config';
    
    export const pathnames = {
      // 保留已有的配置
      '/': '/',
      '/pathnames': '/pathnames',
      // 添加/users静态路径
      '/users': '/users',
      // 如果是带动态参数的路径,比如/users/[userId]
      '/users/[userId]': '/users/[userId]'
    } satisfies Pathnames<typeof locales>;
    
  2. 若是多语言场景,可针对不同locale配置本地化路径:

    export const pathnames = {
      '/': '/',
      '/pathnames': '/pathnames',
      '/users': {
        en: '/users',
        zh: '/用户列表'
      },
      '/users/[userId]': {
        en: '/users/[userId]',
        zh: '/用户详情/[userId]'
      }
    } satisfies Pathnames<typeof locales>;
    
  3. 配置完成后,Link组件即可正常使用目标路径:

    <Link
      href={{
        pathname: '/users/[userId]',
        params: { userId: '5' }
      }}
      className="flex"
    >
      <link.icon size={24} />
      <span className="ml-2">{link.title}</span>
    </Link>
    

补充说明:

next-intl的这种类型约束是为了确保所有导航路径都经过本地化处理,避免未配置的路径导致多语言路由异常。而原生Next.js Link不涉及本地化校验,因此没有这类限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:01:38