我收到以下错误,当我使用 getServerSideProps 函数在道具时间线内返回时,只是一个布尔值。
我不知道我做错了什么。
export async function getServerSideProps({ params }) {
const id = params.id;
const timeline = await verifyTimelineID(id);
return {
props: {
timeline,
},
};
}
我的函数仅在存在带有已发送 ID 的事件时返回,并且返回 true 或 false。
export async function verifyTimelineID(id) {
axios
.get(`${process.env.NEXT_PUBLIC_API_URL}/events/${id}`)
.then(() => {
return { exists: true };
})
.catch(() => {
return { exists: false };
});
}
错误输出:
Error: Error serializing `.timeline` returned from `getServerSideProps` in "/timeline/[id]".
Reason: `undefined` cannot be serialized as JSON. Please use `null` or omit this value.
答案 0 :(得分:1)
只需尝试从 verifyTimelineID 返回值并像这样编辑它。
export async function verifyTimelineID(id) {
return axios
.get(`${process.env.NEXT_PUBLIC_API_URL}/events/${id}`)
.then(() => {
return { exists: true };
})
.catch(() => {
return { exists: false };
});
}
另外我认为在这里使用 async await 更好一些,如下所示。
export async function verifyTimelineID(id) {
try {
await axios.get(`${process.env.NEXT_PUBLIC_API_URL}/events/${id}`)
return { exists: true };
} catch(e) {
return { exists: false };
}
}
我认为这是一种更简洁、更好的语法