使用next-connect v1.0.0-next.4连接MongoDB遇TypeError求助
解决next-connect v1.0.0-next.4的TypeError问题
你的错误是因为next-connect从v1版本开始改用命名导出,不再提供默认导出,原来的import nc from "next-connect"写法会导致nc是undefined,调用nc()就触发is not a function错误。
直接按下面的步骤修改代码即可:
- 修改导入语句,使用命名导入
createRouter:
import DbConnect from "@/utilis/DbConnect"; import { createRouter } from "next-connect"; // 替换原来的import nc from "next-connect" import Service from "@/models/Service";
- 用
createRouter()替代原来的nc()初始化路由:
const handler = createRouter();
修改后的完整代码:
import DbConnect from "@/utilis/DbConnect"; import { createRouter } from "next-connect"; import Service from "@/models/Service"; DbConnect(); const handler = createRouter(); handler.get(async (req, res) => { try { const services = await Service.find({}); res.status(200).json(services); } catch (error) { res.status(500).json({ message: "Error fetching services" }); } }); handler.post(async (req, res) => { const { title, details, isActive } = req.body; const newService = new Service({ title, details, isActive }); try { await newService.save(); res.status(201).json({ message: "Service added successfully" }); } catch (error) { res.status(500).json({ message: "Error adding service" }); } }); export default handler;
补充:next-connect v1版本还有部分API调整,比如全局错误处理需要通过createRouter({ onError: ... })配置,但你当前的接口逻辑用上面的修改就能解决问题。
内容的提问来源于stack exchange,提问作者Muhammad Tawil
相关产品推荐
相关产品推荐

