這是我的 server.js 代碼:
const express = require("express");
const articleRouter = require("./routes/articles");
const app = express();
app.set("view engine", "ejs");
app.use("/articles", articleRouter);
app.use(express.urlencoded({ extended: true }));
app.get("/", (req, res) => {
const articles = [
{
title: "Test Article 1",
createdAt: new Date(),
description: "Test description 1",
},
{
title: "Test Article 2",
createdAt: new Date(),
description: "Test description 2",
},
];
res.render("articles/index", { articles: articles });
});
// app.post("/articles", (req, res) => {
// console.log(req.body);
// });
app.listen(3000, () => {
console.log("Listening on port 3000...");
});
這段代碼(我評論過)作業正常
app.post("/articles", (req, res) => {
console.log(req.body);
});
但是當我嘗試用路由器做同樣的事情時,它回傳未定義。這是我在路由檔案夾中的articles.js 代碼:
const express = require("express");
const router = express.Router();
router.get("/new", (req, res) => {
res.render("articles/new");
});
router.post("/", (req, res) => {
console.log(req.body);
});
module.exports = router;
這里 id new.ejs 代碼,其中 from 是:
<body>
<div class="container">
<h1 class="mb-4">New Article</h1>
<form action="/articles" method="post">
<%- include('_form_fields') %>
</form>
</div>
</body>
僅當我嘗試在路由器檔案中執行此操作時才會出現此問題。如果有人能告訴我我到底做錯了什么,我將非常感激?
uj5u.com熱心網友回復:
使用中間件后,您需要使用任何路由器。我認為使用express.json()從http請求的正文決議json是必需的
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
// ... any middleware
app.use("/articles", articleRouter);
uj5u.com熱心網友回復:
您應該將應用程式傳遞給路由器檔案,然后像這樣定期使用它:
const articleRouter = require("./routes/articles");
articleRouter(app);
在articleRouter檔案中:
module.exports = (app) => {
app.post("/", (req, res) => {
console.log(req.body);
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/460486.html
標籤:javascript 节点.js 表示 邮政 快速路由器
上一篇:AXIOSPOST回應獲取
