ctx.req 获取不到数据
来源:7-11 Github接口代理完善

Tirsky1683388
2021-07-15
老师请问我在重新部署github接口的时候遇到这个问题,首次渲染时可以正常显示页面,但是一旦我刷新页面, 就会报错提示我index页面的 Index.getInitialProps 初始化时ctx是 undefined, 给我感觉是我无法接收服务器的api数据,但具体不清楚是哪里出了问题?
这是Index.js的代码:
const api = require("../lib/api");
function Index({ data }) {
console.log(data);
return <span>Index</span>;
}
Index.getInitialProps = async ({ ctx }) => {
const result = await api.request(
{
url: "/search/repositories?q=react",
},
ctx.req,
ctx.res
);
return {
data: result.data,
};
};
export default Index;
这是lib文件夹下的api.js文件代码:
const axios = require("axios");
const GITHUB_BASE_URL = "https://api.github.com";
const isServer = typeof window === "undefined";
async function requestGithub(method, url, data, headers) {
return await axios({
method,
url: `${GITHUB_BASE_URL}${url}`,
data,
headers,
});
}
async function request({ method = "GET", url, data = {} }, req, res) {
if (!url) {
throw Error("url must be provide");
}
if (isServer) {
const { session } = req;
const { githubAuth } = session || {};
const { access_token, token_type } = githubAuth || {};
const headers = {};
if (githubAuth && access_token) {
headers["Authorization"] = `${token_type} ${access_token}`;
}
return await requestGithub(method, url, data, headers);
} else {
return await axios({
method,
url: `/github${url}`,
data,
});
}
}
module.exports = {
request,
requestGithub,
};
写回答
1回答
-
Tirsky1683388
提问者
2021-07-16
已解决。。在index.js文件里面getInitialProps的时候解构直接拿req和res就可以,解构出的ctx反而是拿不到任何数据的,从而导致下面ctx.req报错
012021-07-17
全栈进阶课程 React16.8+Next.js+Koa2一步到位开发Github
学习React/Next.js服务端渲染SSR同构设计方案,理解OAuth登录体系的实现原理
651 学习 · 311 问题
相似问题