这是中间件
app.use(function (req, res, next){
res.locals.appdata = appdata;
res.locals.errorMessage = "";
res.locals.information = {};
res.errorFromServer = function (req, res){
var mensaje = res.locals.errorMessage;
res.status(500);
res.locals.errorMessage = "";
return res.render('error/500',{errorMessage: mensaje || ""});
}
next();
});
我正在尝试在响应对象中设置一个函数,如answer
我收到此错误
TypeError: Object #<ServerResponse> has no method 'errorFromServer'
为什么我的代码无效?
答案 0 :(得分:0)
代码中的主要问题是,您使用了res
对象并使用return res.render(..)
返回了响应。之后next()
的用途是什么?
最重要的是你要向res
对象添加一个函数(而不是一个值)(你引用的答案使用req
对象并调用了一个函数,它返回了一个值并且它得到了分配给req
对象)。
//Example
function getBrowser() {
return this.get('User-Agent'); //This returns the value.
}
app.use(function (req, res, next) {
req.getBrowser = getBrowser; // You are assigning a value not a function itself.
next();
});