【发布时间】:2021-09-03 14:13:09
【问题描述】:
我有一个端点设置,可以查询调用该端点的外部数据库和页面
在getServerSideProps 内部。使用以下代码,
当我访问 API 端点时,数据已成功返回,但当我转到该页面时,我收到此错误:API resolved without sending a response for /api/get_bans, this may result in stalled requests.
export const getServerSideProps = async () => {
let bans = await fetch('http://localhost:3000/api/get_bans').then((res) => {
return res.json();
})
return {
props: { bans: bans }
}
}
API 端点
import db from '../../db.js';
const handler = (req, res) => {
if(req.method == 'GET') {
db.connect();
db.query('SELECT * FROM tf2jr_guardbans_logs', (error, results, fields) => {
if (error) throw error;
res.status(200).json(results);
})
}
}
export default handler;
【问题讨论】:
-
如果您对
/api/get_bans的请求处理程序有疑问,请向我们展示该请求处理程序的所有代码。 -
另外,
if (error) throw error;永远不应该在一个普通的异步回调中。记录错误并在收到错误时发送实际的错误响应,例如console.log(err); res.sendStatus(500)。扔在那里对你没有任何好处。 -
@jfriend00 你在上一条评论中到底在说什么?它等待获取完成,然后在回调函数中返回响应,然后
getServerSideProps返回该响应 -
@JordanBaron - 好的,我被
res.json()弄糊涂了,这与向 http 请求发送 JSON 响应时使用的语法相同。我以为你正在发送一个http响应。因此,该评论将被删除。
标签: node.js next.js server-side-rendering