我正在构建一个 nuxtjs 应用程序并尝试从全局中间件设置 cookie。我发现this GitHub 上的贡献展示了执行此操作的方法。
所以我像这样实现了我的中间件
export default function ({ isServer, res, query }) {
if (query.lang) {
if (isServer) {
res.setHeader("Set Cookie", [`lang=${query.lang}`]);
} else {
document.cookie = `lang=${query.lang}`;
}
}
}
我的问题是,当我使用 ?lang=xxx
作为参数访问我的应用程序时,我总是遇到 if 条件的 else block 。所以我得到了错误
document is not defined
有谁知道我的代码有什么问题吗?我看不出与 github 上发布的代码有什么区别。
最佳答案
您应该使用cookie-universal-nuxt .
将其添加到 nuxt.config.js
的模块部分中:
['cookie-universal-nuxt', { 别名: 'cookiz' }],
您可以通过 nuxtServerInit
直接在商店中使用它:
async nuxtServerInit({ commit, state, dispatch },
{ app, store, route, req, res, error, redirect }
) {
app.$cookiz.set('lang', route.query.lang)
})
或者在中间件中:
export default function ({ app, res, query }) {
if (query.lang) {
app.$cookiz.set('lang', query.lang)
}
}
关于javascript - NuxtJS在中间件中设置Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60336236/