流星错误处理

卡尼

如何在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章