【问题标题】:Nuxt: i18n.localePath access in middlewareNuxt:中间件中的 i18n.localePath 访问
【发布时间】:2021-06-11 00:20:48
【问题描述】:

我已经为 Nuxt 定义了一个命名空间中间件,如下所示:

export default function({ store, redirect, app }){
    if (!store.state.isAuth) {
        return redirect(app.i18n.localePath('/auth'))
    }
}

如果用户没有通过身份验证,他们将被重定向到身份验证页面,位于/auth。但是,这是一个多语言站点,所以我需要生成当前语言环境对应的路径。通常我会使用$i18n.localePath 或在这种情况下使用 Nuxt 的contextapp.i18n.localePath() 来执行此操作,但是我收到此错误:

 app.i18n.localePath is not a function 

我不知道为什么,因为有一个上下文,console.log(app.i18n) 告诉我 app.i18n.localePath 一个函数:

...
localePath: [Function: bound ],
...

有什么建议吗?谢谢!

【问题讨论】:

    标签: vue.js nuxt.js nuxt-i18n


    【解决方案1】:

    改用app.localePath('/auth')

    【讨论】:

    • 如果您提供解释为什么这是首选解决方案并解释它是如何工作的,它会更有帮助。我们想要教育,而不仅仅是提供代码。
    【解决方案2】:

    是的,由于某种原因,localePath 在中间件中不起作用。 您可能应该手动检测当前的语言环境。

    let locale = app.i18n.locale === app.i18n.defaultLocale ? '' : '/' + app.i18n.locale;
    
    return redirect( locale + '/auth' );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 2019-04-17
      • 2019-08-10
      • 2020-12-20
      • 2021-08-07
      • 1970-01-01
      • 2020-08-18
      • 2021-07-01
      相关资源
      最近更新 更多