Nuxt i18n 在中间件内调用 useRoute 可能会导致误导结果

问题描述 投票:0回答:0

所以我在 nuxt3 中收到此警告:

Calling useRoute within middleware may lead to misleading results. Instead, use the (to, from) arguments passed to the middleware to access the new and old routes.

发生这种情况是因为我在中间件中调用

useLocalePath()

这是发生这种情况的中间件之一:

export default defineNuxtRouteMiddleware(async(to, from) => {
    const localPath = useLocalePath()

    const isUserAuthenticated = await isAuthenticated()

    if (isUserAuthenticated) {
        if (to.fullPath === localPath('login') || to.fullPath === localPath('register')) {
            return navigateTo(localPath('/'))
        }
    } else {
        if (to.fullPath !== localPath('login') && to.fullPath !== localPath('register')) {
            return navigateTo(localPath('login'))
        }
    }

})

我的 nuxt.config.ts 中有这个:

i18n: {
        lazy: true,
        langDir: "locales",
        strategy: "prefix_and_default",
        locales: [
            {
                code: 'nl-Nl',
                iso: 'nl-Nl',
                name: 'Dutch',
                file: 'nl-NL.json'
            },
            {
                code: 'en',
                iso: 'en',
                name: 'English',
                file: 'en.json'
            },
        ],
        detectBrowserLanguage: {
            useCookie: true,
            cookieCrossOrigin: true,
            alwaysRedirect: true,
            cookieKey: 'i18n_redirected',
            redirectOn: 'root'
        },
        defaultLocale: "nl-Nl",
        customRoutes: 'config',
        pages: {
            pricing: {
                en: '/pricing',
                'nl-Nl': '/prijzen',
            }
        }
    }

这是我正在使用的 i18n 版本:

"@nuxtjs/i18n": "^8.0.0-beta.12",

问题是,代码工作得很好,但我不知道为什么它给我这个警告。

忽略此警告是否安全?

javascript vue.js nuxt.js vue-i18n
© www.soinside.com 2019 - 2024. All rights reserved.