我正在尝试使用 express 路由器分离我的路由,但是我遇到了问题。出于某种原因,当我在我的 .get 方法中声明一个匿名函数时,它起作用了。但是,一旦我定义了自己的函数并将其传入,请求和响应对象就变成未定义的。
这行得通
var express = require("express");
var router = express.Router();
router.get("/", function(request, response, next){
console.log("getting the hello page");
response.send("hello");
});
module.exports = router;
然而这失败了
var express = require("express");
var router = express.Router();
function getHelloPage(request, response, next) {
console.log("getting the hello page");
response.send("hello");
}
router.get("/", getHelloPage(request, response, next));
module.exports = router;
甚至尝试过:
router.get("/", getHelloPage());
对这里发生的事情有什么想法吗?
最佳答案
在将函数用作回调时不应调用该函数,而应仅使用其名称以便传递可在以后调用的函数引用。在您的情况下,您立即调用它并传递返回值,并且由于它不返回任何内容,因此您的原始代码等于:
getHelloPage();
router.get("/", undefined);
当您将函数体传递给它时,它应该可以正常工作:
router.get("/", getHelloPage);
长话短说
它是 getHelloPage
与 getHelloPage()
作为回调函数。
关于javascript - 请求和响应对象在移动到函数时变得未定义(nodejs,express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931178/