You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS API端点报错:未返回响应致请求停滞的问题排查

API路由响应未发送错误的含义与修复

错误含义

API resolved without sending a response for /api/foo, this may result in stalled requests. 这个错误表示Next.js的API路由处理函数(handler)在执行结束前,没有向客户端返回任何HTTP响应就提前退出了。即便给handler加了async修饰符,但由于内部异步操作未被正确等待,导致函数提前完成,Next.js判定响应未发送。

修复方案

问题出在你用.then()处理Firebase的uploadString异步操作,但未让handler函数等待该操作完成。正确做法是利用async/await语法等待异步任务结束,确保响应在handler退出前发送。

修改后的/api/foo.js代码:

import { ref, uploadString } from 'firebase/storage'
import { storage } from './firebase'

export default async function handler(req, res) {
  const data = req.body
  const storageRef = ref(storage, data.ID)
  
  // 用await等待上传操作完成,替代.then()回调
  const snapshot = await uploadString(storageRef, JSON.stringify(data.object))
  
  // 发送成功响应,res.json会自动调用res.end()
  res.status(200).json({ message: 'Saved!', severity: 'success' })
}

修复逻辑说明

  • 原代码中,uploadString返回的Promise通过.then()处理,但handler函数未等待这个Promise完成,直接执行到函数末尾并退出,此时响应还未发送,Next.js因此抛出错误。
  • 使用await后,handler会暂停执行,直到uploadString完成,之后再执行响应发送逻辑,确保响应在handler结束前被正确发送。

另外,res.json()方法会自动调用res.end()结束响应,无需额外手动调用。

内容的提问来源于stack exchange,提问作者aabdulahad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:20:43