快递3中的新中间件失败了

时间:2014-01-25 04:07:23

标签: javascript node.js express

这是中间件

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'

为什么我的代码无效?

1 个答案:

答案 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();
});