Dies ist meine Hauptdatei index.js
type here const express = require("express"); const app = express(); require("dotenv").config(); const port = process.env.port || 4000; app.use(express.json()); const createBlog = require("./routes/blogRoutes"); app.use("/santi/api/v1",createBlog); app.listen(port, () => { console.log("App run in 3000 port"); }) const dbConnect = require("./config/database"); dbConnect(); app.get("/", (req,res) => { res.send(`<h1>this is homepage</h1>`); })
Das ist meine Route
const express = require("express"); const router = express.Router(); const {createBlog} = require("../controlers/createBlog"); router.post("/createBlog",createBlog); module.exports = router;
Das ist meine Controller-Datei
const createPost = require("../models/post"); exports.post = async (req,res) => { try { const {title,description} = req.body; const response = await createPost.create({title,description}); res.status(200).json({ status:true, message:"Insert seccessfully", data:response }) } catch(error) { console.error(err); res.status(500).json({ status:false, message:error.message, data:"Server issue" }) } }
Das ist meine Modelldatei
const mongoose = require("mongoose"); const blogPostSchema = new mongoose.Schema( { title:{ type:String, required:true, maxlength:50 }, description:{ type:String, required:true, maxlength:50 } } ) module.exports = mongoose.model("blogPost",blogPostSchema);
Ich habe Nodemon und Mongoose installiert, erhalte aber immer noch eine Fehlermeldung im Terminal, nachdem ich den Befehl „npm run dev“ geschrieben habe
[email protected] Entwickler Nodemon index.js
[nodemon] 2.0.22
【nodemon】 Jederzeit neu starten, rs
eingeben
[nodemon] Überwachungspfad: .
[nodemon] Erweiterungen anzeigen: js, mjs, json
[nodemon] starten node index.js
C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211
throw newError(message);
^
Fehler: Route.post() hat eine Rückruffunktion erwartet, aber eine erhalten [Objekt undefiniert] auf dem Weg. [Als Beitrag] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211:15) im Prototyp. [Als Beitrag] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterindex.js:521:19) im Objekt. (C:UsersSWETTAOneDriveDesktopblog_backendroutesblogRoutes.js:6:8) in Module._compile (node:internal/modules/cjs/loader:1254:14) in Module._extensions..js (node:internal/modules/cjs/loader:1308:10) bei Module.load(node:internal/modules/cjs/loader:1117:32) in Module._load (node:internal/modules/cjs/loader:958:12) in Module.require (node:internal/modules/cjs/loader:1141:19) bei Bedarf (node:internal/modules/cjs/helpers:110:18) im Objekt. (C:UsersSWETTAOneDriveDesktopblog_backendindex.js:9:20)
Was ist die Lösung?
问题出在您的控制器文件中,您正在导出名为 post 的函数,并将其作为 createBlog 导入到您的路由文件中。要更正您的代码,您应该更新您的控制器并将该函数重命名为 createBlog :
我在您的路由器代码中发现一个小错误。
您在控制器中将函数导出为
post
,并将其导入路由器中作为createBlog
。并且您的控制器不会导出任何名为createBlog
的内容,因此问题是。只需将路由器代码更改为: