반응형
Nuxt.js가 RouteMiddleware에서 Vuex를 사용할 수 없음
현재 Nuxt.js와 Firebase-admin을 사용하여 프로젝트를 만들고 있습니다.Route Middleware의 Vuex 사용자 정보를 참조하여 라우팅하고 싶은데 Route Middleware에서 Vuex에 액세스할 수 없습니다.
store/index.js
코드는 다음과 같습니다.
export const state = () => ({
user: {},
});
export const getters = {
getUser: state => state.user,
};
export const mutations = {
setUser(state, payload) {
state.user = payload;
},
};
export const actions = {
nuxtServerInit({ commit, getters }, { req }) {
if (process.server && process.static) return;
if (!req.headers.cookie) return;
if (req.headers.cookie) {
const parsed = cookieparser.parse(req.headers.cookie);
const accessTokenCookie = parsed.access_token;
if (!accessTokenCookie) return;
admin.auth().verifyIdToken(accessTokenCookie)
.then(decodedToken => {
const userInfo = {
email: decodedToken.email,
uid: decodedToken.uid
};
commit("setUser", userInfo);
console.log('uid in nuxtServerInit is ' + getters.getUser.uid)
})
.catch(e => {
console.log(e)
});
} else {
return
}
},
};
middleware/validateRoute.js
코드는 다음과 같습니다.
export default function({ store, redirect, route }) {
const currentPath = route.path;
console.log("uid in middleware is " + store.getters.getUser.uid);
if (
!!store.getters.getUser.uid &&
(currentPath === "/auth/signup" || currentPath === "/auth/login")
) {
return redirect("/");
}
if (
!store.getters.getUser.uid &&
currentPath !== "/auth/signup" &&
currentPath !== "/auth/login"
) {
return redirect("/auth/login");
}
};
콘솔을 보면store.getters.getUser
Vuex 사용자에게 값이 있는데도 정의되지 않았습니다.
무슨 일이야?
언급URL : https://stackoverflow.com/questions/66272071/nuxt-js-cannot-use-vuex-in-routemiddleware
반응형
'sourcecode' 카테고리의 다른 글
스위치의 케이스를 건너뛰기 위해 if(0)를 사용하는 것은 기능합니까? (0) | 2022.07.28 |
---|---|
Nuxt 구성 요소를 사용하여 vuex getter 메서드에 매개 변수를 전달하는 방법은 무엇입니까?(3개의 도트 표기법을 유지하면서) (0) | 2022.07.28 |
특정 프로세스에 대해 런타임에 로드되는 공유 라이브러리를 확인하는 방법 (0) | 2022.07.28 |
봄에 여러 @RequestMapping 주석을 사용하는 방법 (0) | 2022.07.28 |
Clang은 x * 1.0을 최적화하지만 x + 0.0은 최적화하지 않는 이유는 무엇입니까? (0) | 2022.07.28 |