應用程式.js
const express = require("express");
const app = express();
app.use("/", require("./routers.js")(app));
app.listen(3000);
路由器.js
module.exports = function (app) {
console.log(app);
app.get("/", (req, res) => {
res.json(5);
});
};
控制臺給出的錯誤是:“ TypeError: Router.use() requires a middleware function but got an undefined ”
我不明白為什么我不能通過路由器傳遞 express app(app.js) (這樣我就不會在 router.js 中重新宣告 express 和 app 變數)。
uj5u.com熱心網友回復:
Express的使用方法需要三個引數的回呼,而不是app本身,所以需要這樣的東西:
在 routes.js 中
exports.doSomeThing = function(req, res, next){
console.log("Called endpoint");
res.send("Called endpoint");
}
在你的 index.js
const Express = require("express");
const app = Express();
const routes = require("./routes");
app.use("/", routes.doSomeThing);
app.listen(3030, () => {
console.log("Listening on port 3030");
});
這種方法不需要包含快速路由器,但這對于大型專案可能并不合適,我建議您閱讀快速路由器檔案:
https://expressjs.com/es/guide/routing.html#express-router
uj5u.com熱心網友回復:
不要將應用程式傳遞給路由更好地創建一個新的路由器并傳遞給應用程式。
路由器.js
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.json(5);
});
module.exports = router;
應用程式.js
app.use("/", require("./routers.js"));
正如您在評論中提到的,您不必添加內部 app.use
module.exports = function (app) {
app.get("/", (req, res) => {
res.json(5);
});
};
// app.js
require("./routers.js")(app);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406428.html
標籤:
