如何在 Meteor.js 中添加全局异常/错误处理程序。我浏览了这么多代码,但没有人解释全局方法...每个人都只是在每个 Meteor.call 周围进行 try catch 或向其添加异步回调。但我很懒,我只想要一段代码来处理我所有的 Meteor.Errors。大多数情况下,它已经是客户端可读错误。所以我只需要把它展示给他就可以了。
我尝试使用:
$(window).error(function(error) {
const errorText = T9n.get("Exception." + error.originalEvent.error.error);
View.toast(errorText);
});
但它只适用于正常的 javascript 错误,不适用于 Metero.Error.. 似乎是 Meteor 在我捕获它之前捕获了它。
最佳答案
我不知道这是否正是您所需要的,但是,这是一个解决方案。
在每个 Meteor.call() 中,都像这样:
Meteor.call('contactForm', arg1, arg2, function(err, res){
handleError(err, res);
});
在客户端定义可重用的错误处理程序:
handleError = function (err, res){
if(err){
//do something with the error sent from server. not the ugly alert() like this code.
alert('error!')
} else{
//do something if no errors.
alert('done!')
}
}
当然,您必须在方法中定义错误和结果,但这解决了在客户端一遍又一遍地编写相同内容的问题。您还可以在服务器端定义像上面的handleError 这样的帮助器。例如,我的服务器中有 checkUser()
,如下所示:
checkUser = function (){
if(!Meteor.user()){
throw new Meteor.Error(400, 'You are not a unicorn yet! I mean, user.')
}
}
在方法中我只需编写 checkUser();
即可使用它。
编辑: 这些全局函数不在任何其他代码块内。只需让它们独立即可
关于javascript - meteor 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38254718/