node.js - Node.js 如何将错误消息从快速路由器发送到 Web 控制台
问题描述
在我的应用程序中,我正在放置一个 http 请求,并且在快乐的情况下一切正常。但是当我故意提供错误数据来填充错误时,它会在 node.js 服务器控制台中显示错误,但不会将错误消息发送到 Web 控制台。
在我的 Angularjs 中,我在角度控制器功能中放置了如下 $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();
});
});
请建议我更好的错误处理方式。如果收到错误,我想显示一些警报。我注意到如果出现错误,它会在服务器控制台上显示错误,但在 chrome 控制台中In Start, something went wrong.
显示“ ”。success in startprocess
谢谢
解决方案
您提供的两个回调是成功和错误回调。如果响应码不在 200 到 299 之间,则会发生错误回调。默认情况下,错误码是 200,因此您需要res.status(400)
在调用前将响应码设置为或类似res.send
。
因此,{ data: err }
您正在创建的对象可能在response
您的第一个回调中的变量中。
推荐阅读
- grep - 如何使用 findstr 或 grep 命令在文本文件中查找指定长度的字符串?
- python - 如何在 Python 项目中正确构建内部脚本?
- javascript - 我在反应中使用 scrollLeft 但它没有将它的值设置为元素
- javascript - “$” - 谁先拥有它?jQuery 或浏览器
- r - 如何使用条件表达式的 r 数据名来过滤数据的数据帧?
- ios - 移除 CoreGraphics 动画
- reactjs - 当我在 create-react-app 中输入 npm start 时如何指定自定义 URL
- python - 如何根据世代显示,x '攻击' 和 y '防御'
- javascript - 在加载组件中检查后表达式已更改
- python - 如何修复 Anaconda Jupyter Notebook 内核错误?