使用nuxt跟eggjs做的服务端渲染,目前遇到问题了,在about页面刷新,eggjs的中间件拿不到用户的session了,哪位大佬帮看看,不知道是nuxt这边的问题还是eggjs这边的问题
中间件定义
const { Nuxt, Builder } = require("nuxt");
let config = require("../../nuxt.config");
module.exports = (options, app) => {
const nuxtRender = new Nuxt(config);
let isDev = process.env.NODE_ENV !== "production";
if (isDev) {
new Builder(nuxtRender).build();
}
return async function(ctx, next) {
let flag = false;
let routerArr = [];
if (!flag) {
routerArr = app.router.stack.map(el => el.path);
flag = true;
}
if (routerArr.some(el => el === ctx.path)) {
return await next();
}
ctx.status = 200;
ctx.req.session = ctx.session;
const { res, req } = ctx;
return new Promise((resolve, reject) => {
ctx.res.on("close", resolve);
ctx.res.on("finish", resolve);
nuxtRender.render(req, res, promise => {
promise.then(resolve).catch(reject);
});
});
};
};
about页面请求
export default {
asyncData({ params }) {
return axios.get("http://127.0.0.1:7001/api/info").then(res => {
return { info: res.data };
});
}
};
nuxtServerInit定义
export const state = () => ({
user: null
});
export const mutations = {
setUser(state, data) {
state.user = data;
}
};
export const actions = {
nuxtServerInit({ commit }, { req }) {
if (req.session.user) {
console.log("client", req.session.user);
commit("setUser", req.session.user);
}
}
};