参数 express 不能用 require 传递
Parameter express can't be passed with require
app.js
const express = require("express");
const app = express();
app.use("/", require("./routers.js")(app));
app.listen(3000);
router.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 变量)。
不要将应用传给路由更好地创建一个新的路由器并传递给应用。
router.js
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.json(5);
});
module.exports = router;
app.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);
Express的use方法需要三个参数的回调,而不是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");
});
这种方法不需要包括 express router 但这可能不适用于大型项目我建议您阅读 express router 文档:
app.js
const express = require("express");
const app = express();
app.use("/", require("./routers.js")(app));
app.listen(3000);
router.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 变量)。
不要将应用传给路由更好地创建一个新的路由器并传递给应用。
router.js
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.json(5);
});
module.exports = router;
app.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);
Express的use方法需要三个参数的回调,而不是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");
});
这种方法不需要包括 express router 但这可能不适用于大型项目我建议您阅读 express router 文档: