NuxtJS在中间件中设置Cookie

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

我正在构建nuxtjs应用,并尝试从全局中间件设置cookie。我在GitHub上发现了this贡献,其中提供了一种实现此目的的方法。

所以我实现了这样的中间件

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块。所以我得到了错误

document is not defined

有人知道我的代码有什么问题。我看不到在github上发布的代码有所不同。

javascript cookies nuxt.js
1个回答
0
投票

您应使用cookie-universal-nuxt

您可以通过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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.