【问题标题】:API resolved without sending a response when trying to fetch data from separate page尝试从单独的页面获取数据时,API 解析而不发送响应
【发布时间】: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 resolved without sending a response in Nextjs
  • 如果您对/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


【解决方案1】:

如果你替换

if (error) throw error;

if (error) return res.status(500).json(error.message);

你应该看到实际的错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多