NuxtJS 在中间件中设置 Cookie

Mar*_*kus 2 javascript cookies nuxt.js

我正在构建一个 nuxtjs 应用程序并尝试从全局中间件设置 cookie。我在 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}`;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我使用?lang=xxx作为参数访问我的应用程序时,我总是遇到 if 条件的 else 块。所以我得到了错误

document is not defined
Run Code Online (Sandbox Code Playgroud)

有谁知道我的代码有什么问题。我看不出与 github 上发布的代码有何不同。

Man*_*piK 11

您应该使用cookie-universal-nuxt

将此添加到您的模块部分中nuxt.config.js
['cookie-universal-nuxt', { alias: 'cookiz' }],

您可以直接在商店中使用它nuxtServerInit

async nuxtServerInit({ commit, state, dispatch },
    { app, store, route, req, res, error, redirect }
) {
    app.$cookiz.set('lang', route.query.lang)
})
Run Code Online (Sandbox Code Playgroud)

或者在中间件中:

export default function ({ app, res, query }) {
  if (query.lang) {
    app.$cookiz.set('lang', query.lang)
  }
}
Run Code Online (Sandbox Code Playgroud)