流星服务器方法引发的错误不会记录原始堆栈跟踪

时间:2019-06-05 01:40:21

标签: meteor

自从1.6.x升级到meteor 1.8.0.2以来,我注意到任何导致错误的方法调用都会在服务器控制台上显示为:

Exception while invoking method 'login' [object Object]
Exception while invoking method 'customMethodByMe' [object Object]

这既发生在我的Mac上,也发生在我的Galaxy上。

之前,已打印整个堆栈跟踪,但是此Object对象日志记录无法帮助我确定实际问题。到目前为止,我的解决方案是将方法实现包装在try catch语句中,该语句记录原始异常并将其重新抛出以使客户端知道。

Meteor.methods({
  'customMethodByMe'() {
    try {
      return customMethodByMeImpl();
    } catch (e) {
      console.log(e)
      throw e;
    }
  }
});

在这种情况下,由于错误是在软件包中的login方法上,所以我无法更新它以打印出实际的问题。在客户端上,我遇到的所有错误都是服务器上存在500错误,因此也没有根本原因。

{"isClientSafe":true,"error":500,"reason":"Internal server error","message":"Internal server error [500]","errorType":"Meteor.Error"}

关于如何临时解决此问题的任何想法?我一直在寻找服务器级别的错误处理程序,但到目前为止没有发现任何问题。

谢谢

1 个答案:

答案 0 :(得分:0)

我没有直接体验过,但是当我需要打印对象时,通常使用JSON.stringfy。

Meteor.methods({
  'customMethodByMe'() {
    try {
      return customMethodByMeImpl();
    } catch (e) {
      console.log(JSON.stringify(e));
      throw e;
    }
  }
});

这应该可以解决,以便您至少可以阅读错误日志。