Ini ialah fail utama saya 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>`); })
Ini adalah laluan saya
const express = require("express"); const router = express.Router(); const {createBlog} = require("../controlers/createBlog"); router.post("/createBlog",createBlog); module.exports = router;
Ini ialah fail pengawal saya
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" }) } }
Ini ialah fail model saya
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);
Saya memasang nodemon dan mongoose tetapi masih mendapat ralat dalam terminal selepas menulis arahan "npm run dev"
[e-mel dilindungi] Pembangun Nodemon index.js
[nodemon] 2.0.22
【nodemon】Mulakan semula pada bila-bila masa, masukkan rs
[nodemon] Laluan pemantauan: .
[nodemon] Lihat sambungan: js, mjs, json
[nodemon] mula node index.js
C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211
buang newError(message);
^
Ralat: Route.post() menjangkakan fungsi panggil balik tetapi mendapat satu [objek tidak ditentukan] di laluan itu. [Sebagai siaran] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211:15) dalam prototaip. [Sebagai catatan] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterindex.js:521:19) dalam objek. (C:UsersSWETTAOneDriveDesktopblog_backendroutesblogRoutes.js:6:8) dalam Module._compile (node:internal/modules/cjs/loader:1254:14) dalam Module._extensions..js (node:internal/modules/cjs/loader:1308:10) di Module.load(node:internal/modules/cjs/loader:1117:32) dalam Module._load (nod:internal/modules/cjs/loader:958:12) dalam Module.require (nod:internal/modules/cjs/loader:1141:19) apabila diperlukan (nod:internal/modules/cjs/helpers:110:18) dalam objek. (C:UsersSWETTAOneDriveDesktopblog_backendindex.js:9:20)
Apakah penyelesaiannya?
Masalahnya adalah dalam fail pengawal anda, anda mengeksport fungsi yang dipanggil pos dan mengimportnya sebagai createBlog dalam fail laluan anda. Untuk membetulkan kod anda, anda harus mengemas kini pengawal anda dan menamakan semula fungsi untuk createBlog :
Saya menemui pepijat kecil dalam kod penghala anda.
Anda mengeksport fungsi sebagai kandungan
post
,并将其导入路由器中作为createBlog
。并且您的控制器不会导出任何名为createBlog
dalam pengawal anda, maka persoalannya.Tukar kod penghala anda kepada: