NuxtJS set Cookie in Middleware
You should use cookie-universal-nuxt.
Add this in your module section in nuxt.config.js
:
['cookie-universal-nuxt', { alias: 'cookiz' }],
You can use it directly in the store with nuxtServerInit
:
async nuxtServerInit({ commit, state, dispatch },
{ app, store, route, req, res, error, redirect }
) {
app.$cookiz.set('lang', route.query.lang)
})
Or in a middleware:
export default function ({ app, res, query }) {
if (query.lang) {
app.$cookiz.set('lang', query.lang)
}
}
Markus
Markus studies computer science at the DHBW Ravensburg (Germany). He‘s currently employed as a trainee at Accenture as part of his course.
Updated on June 04, 2022Comments
-
Markus almost 2 years
I'm building a nuxtjs app and try to set a cookie from a global middleware. I found this contribution on GitHub which shows a method to do this.
So I implemented my middleware like 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}`; } } }
My problem is that when I visit my app with
?lang=xxx
as a parameter, I'm always running into the else block of my if condition. So I get the errordocument is not defined
Has anyone a idea what is wrong with my code. I can't see a difference to the code published on github.
-
Alexander Kim almost 3 yearsi have faced an issue with nuxt production build, it simply won't set any cookies from a page or component