javascript - 请求和响应对象在移动到函数时变得未定义(nodejs,express)

标签 javascript node.js express

我正在尝试使用 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);

长话短说

它是 getHelloPagegetHelloPage() 作为回调函数。

关于javascript - 请求和响应对象在移动到函数时变得未定义(nodejs,express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931178/

相关文章:

javascript - 分析经典代码: hitCallback

javascript - 如何使用 node.js 获取推文

node.js - Node.js 的 Express 是否有 .request()

javascript - 如何将 mysql 结果传递给变量以在模板引擎中呈现

javascript - Jest 测试失败 : "Window is not defined"

javascript - 在fabric.js中设置 Canvas 的宽度和高度

node.js - 为什么我们要在 Express 服务器文件中导入 Mongoose?

javascript - Node 在继续之前等待异步功能

node.js - 将带有Docker的MERN应用程序部署到GCP App Engine时发生问题-部署是否需要花费几个小时?

javascript - 如何向网站添加加载屏幕