【发布时间】:2018-11-10 17:39:28
【问题描述】:
在我的应用程序中,我正在发出一个 http 请求,并且在快乐的情况下一切正常。但是当我故意给错误数据填充错误时,它会在node.js服务器控制台中显示错误,但不会将错误消息发送到Web控制台。
在我的 Angularjs 中,我在 Angular 控制器函数中放置了如下 $http 请求。
$http({
url: '/startprocess',
method: "POST",
data: {host: 'XX.XX.XX.XXX', user: 'XX', pass: 'YYYY'},
crossDomain: true,
//timeout: 1,
headers: {'Content-Type': 'application/json','charset' : 'utf-8'}
}).then(function(response) {
console.log('success in startprocess');
$scope.mydata = response;
}, function(response) {
console.log('error in startprocess');
console.log(response);
});
在app.js处理这个请求
var startprocess = require('./routes/startprocess');
app.use('/startprocess', startprocess);
在路由文件夹中,我有 startprocess.js 具有以下代码,
var express = require('express');
var router = express.Router();
var SSH = require('simple-ssh');
router.post('/startprocess', function(req, res){
ssh = new SSH({
host: req.body.host,
user: req.body.user,
pass: req.body.pass
});
ssh.exec('ls', {
out: function(stdout) {
console.log(stdout);
}
}).start();
ssh.on('error', function(err) {
console.log('In Start, something went wrong.');
console.log(err);
//res.setHeader('Content-Type', 'application/json');
res.send({ data: err })
ssh.end();
});
});
请建议我更好的错误处理方式。如果收到错误,我想显示一些警报。我注意到如果出现错误,它会在服务器控制台 In Start, something went wrong. 上显示错误,但在 chrome 控制台中显示“success in startprocess”。
谢谢
【问题讨论】:
-
res.status(404).send();只需在其中获取状态代码,事情就会按照您的意愿进行排序。实际的错误对象或消息不太重要。 en.wikipedia.org/wiki/List_of_HTTP_status_codes -
谢谢@giankotarola。有效。你让我今天一整天都感觉很好。 :-)