1

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

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

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

 app.i18n.localePath is not a function 

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

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

有什么建议么?谢谢!

4

2 回答 2

2

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

let locale = app.i18n.locale === app.i18n.defaultLocale ? '' : '/' + app.i18n.locale;

return redirect( locale + '/auth' );
于 2021-03-13T12:13:26.643 回答
0

app.localePath('/auth')改为使用

于 2021-09-28T09:40:12.357 回答