我使用的是NodeJS v6.5.0。 我是新手,所以我犯了一些错误,并会感激一些帮助。 我正在尝试编写自己的中间件。 现在,我有代码工作:
var http = require('http');
http.createServer(function(req, res) {
myMiddleware(req, res);
}).listen(3000);
function myMiddleware(req, res) {
res.end('Hello World');
};
但是,当我将其更改为:
var http = require('http');
http.createServer(myMiddleware(req, res)).listen(3000);
function myMiddleware(req, res) {
res.end('Hello World');
};
我收到错误' req未定义'。 请有人向我解释为什么会发生这种情况以及我需要做些什么来解决这个问题? 欢呼声。
答案 0 :(得分:3)
只需写下
var http = require('http');
function myMiddleware(req, res) {
res.end('Hello World');
};
http.createServer(myMiddleware).listen(3000);
您需要传递中间件(函数)来表达,而不是执行它
答案 1 :(得分:0)
我们不需要在使用中间件时发送请求或响应。
var http = require('http');
function myMiddleware() {
return function(req,res,next) {
// do some stuff here
next();
}
}
http.createServer(myMiddleware).listen(3000);
或者如果你想在中间件中传递参数,你可以这样使用
var http = require('http');
function myMiddleware(getparams) {
return function(req,res,next) {
// do some stuff here
console.log(getParams)
next();
}
}
http.createServer(myMiddleware(params)).listen(3000);
Next()用于将控制传递给下一个方法或下一个中间件。