Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在节点中返回HTTP错误状态代码?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在节点中返回HTTP错误状态代码?

Javascript 如何在节点中返回HTTP错误状态代码?,javascript,node.js,Javascript,Node.js,在JavaScript/NodeJS中,返回错误号或错误状态代码的最有效方法是什么?例如,我想在以下代码段中返回401的状态代码(或错误代码): var login = function (params, callback) { var email = params.email || '', password = params.password || ''; if (!isValidEmail(email)) { retur

在JavaScript/NodeJS中,返回错误号或错误状态代码的最有效方法是什么?例如,我想在以下代码段中返回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);

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

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

myFunctionThatDoesSomethingAsync(function (err,results) {
  if (!err)
    doSomethingWith(results)
})
阅读更多:

抱歉,我再次阅读了您的问题,在使用NodeJS HTTP响应时,您应该执行以下操作:

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

你是说,发送给客户?您使用的是什么框架?使用节点。。。不管我如何处理它,我只希望error对象包含数值。如果这是问题所在,只需使用helper
函数StatusError(stat,msg){var err=new error(msg);err.statusCode=stat;return err;}
就可以了。我的目标是在错误对象上包含一个数值(状态代码)。