/api/addproducts接口未返回响应致请求停滞,求排查解决
排查Next.js添加产品API的响应未发送问题
核心问题分析与修复步骤
1. API路由未处理非POST请求
当前代码仅处理POST方法,当请求为GET、PUT等其他类型时,未返回任何响应,这直接触发了"API resolved without sending a response"错误。
修复方式:
在API函数末尾添加非POST请求的响应逻辑:
export default async function handler (req, res){ const {method}=req // ... 原有代码 // 处理非POST请求 else { res.setHeader('Allow', ['POST']); res.status(405).json({ message: `Method ${method} Not Allowed` }); } }
2. 数据库连接未等待完成
dbConnect()是异步函数,但调用时未加await,导致数据库连接尚未建立就执行产品保存操作,可能引发数据库操作失败且无法正确捕获错误。
修复方式:
调用dbConnect()时添加await:
await dbConnect()
3. 未声明变量savedProduct
代码中savedProduct=await product.save()未用let或const声明,会隐式创建全局变量,可能引发意外问题。
修复方式:
添加变量声明:
const savedProduct = await product.save()
4. 数据库连接代码中的拼写错误
数据库连接代码里let cashed=global.momgoose存在拼写错误,momgoose应为mongoose,这会导致缓存机制失效,每次请求都重新创建数据库连接,可能引发连接异常。
修复方式:
修正拼写错误:
let cashed = global.mongoose
完整修复后的API代码
import Product from "../../models/Products" import dbConnect from "../../middlewear/db" export default async function handler (req, res){ const {method}=req try { await dbConnect() // 等待数据库连接完成 if(method==='POST'){ const product = new Product(req.body) const savedProduct = await product.save() return res.status(200).json({ message: "success" }); } else { res.setHeader('Allow', ['POST']); res.status(405).json({ message: `Method ${method} Not Allowed` }); } } catch (error) { res.status(500).json({status:"Internal server error", message:error.message}) } }
完整修复后的数据库连接代码
import mongoose from "mongoose" const MONGNODB_URL=process.env.MONGNODB_URL if(!MONGNODB_URL){ throw new Error("Please define mongo URI inside .env.local") } let cashed=global.mongoose // 修正拼写错误 if(!cashed){ cashed=global.mongoose={conn:null,promise:null} } async function connectDB(){ if(cashed.conn){ return cashed.conn } if(!cashed.promise){ const opts={ bufferCommands:false } cashed.promise= await mongoose.connect(MONGNODB_URL,opts).then((mongoose)=>{ return mongoose }) } cashed.conn=await cashed.promise return cashed.conn } export default connectDB
内容的提问来源于stack exchange,提问作者user18259724
相关产品推荐
相关产品推荐

