【问题标题】:How to return HTTP error status code in Node?如何在 Node 中返回 HTTP 错误状态码?
【发布时间】:2016-02-07 02:26:12
【问题描述】:

在 JavaScript / NodeJS 中返回错误号或错误状态代码的最有效方法是什么?比如我想在下面的sn-p中返回一个状态码(或者错误码)401:

var login = function (params, callback) {

    var email       = params.email || '',
        password    = params.password || '';

    if (!isValidEmail(email)) { 
        return callback(new Error('Email address required', 401)); 
    }

    // Do something else
};

上面的登录方法将被调用如下:

authRouter.post('/login', function(req, res) {
   svc.login(req.body, function (err, response) {
       if (err) {
           err.statusCode = err.statusCode || 401;
           return res.status(err.statusCode).send({ message: err.message });
       } else {
           return res.send(response);
       }
   });
});

这里的目标是在方法中设置err.statusCode(或类似的)并通过回调传回。基本上,我正在寻找这个的简写版本:

var err = new Error('Email address required');
err.statusCode = 401;
return callback(err);

【问题讨论】:

  • 您的意思是,发送给客户?你用的是什么框架?
  • Using Node ... 我用它做什么都不重要,我只希望错误对象包含数值。
  • 如果这就是问题所在,请使用助手function StatusError(stat, msg) { var err = new Error(msg); err.statusCode = stat; return err; } 然后

标签: javascript node.js


【解决方案1】:

在 nodeJS 中,您应该在回调的第一个参数中返回错误。

myFunctionThatDoesSomethingAsync (callback) {
  doSomethingAsync('asanas', function (){
    //do something 
    return callback(err,results)
  })
}

myFunctionThatDoesSomethingAsync(function (err,results) {
  if (!err)
    doSomethingWith(results)
})

阅读更多:http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/

抱歉,我再次阅读了您的问题,并且正在处理 NodeJS HTTP 响应,您应该执行以下操作:

res.writeHead(401, {'Content-Type': 'text/plain'});
res.end('Email address required'');

【讨论】:

  • 这不是问题。我的目标是在错误对象上包含一个数值(状态代码)。
猜你喜欢
  • 1970-01-01
  • 2015-08-29
  • 2016-04-16
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多