Next.js API路由返回Promise { <pending> } 数据无法显示如何解决?
问题原因
getDataFromSheets为异步方法,调用后会返回Pending状态的Promise对象,你没有等待异步操作执行完成就直接返回了该对象,因此控制台会打印Promise { <pending> },接口也无法返回正常的表格数据。
修复代码
Next.js API路由原生支持async/await语法,按如下方式调整handler函数即可:
import { getDataFromSheets } from "../../libs/sheets"; // 为handler添加async标识 export default async function handler(req, res) { // 调用异步方法前添加await等待执行完成 const sheet = await getDataFromSheets(); console.log(sheet); res.status(200).json(sheet); }
异常处理优化
建议额外添加try/catch捕获异步操作可能出现的异常,避免接口直接抛出服务端错误:
import { getDataFromSheets } from "../../libs/sheets"; export default async function handler(req, res) { try { const sheet = await getDataFromSheets(); console.log(sheet); res.status(200).json(sheet); } catch (err) { console.error('表格数据读取失败:', err); res.status(500).json({ error: '数据获取失败', msg: err.message }); } }
内容的提问来源于stack exchange,提问作者Monu Patil
相关产品推荐
相关产品推荐

