如何在Meteor.js中添加全局异常/错误处理程序。我浏览了太多代码,但是没有人解释一个全局方法...每个人都只是尝试尝试捕获每个Meteor.call或向其中添加异步回调。但是我很懒,我只想要一段处理我所有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();
来使用它。
编辑:这些全局函数不在任何其他代码块内。让他们独立
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句