如何包装Meteor.Error方法?

时间:2018-02-07 12:46:09

标签: javascript meteor winston

我想将Meteor.Error消息记录到温斯顿,但我找不到包装函数Meteor.Error的好方法。

以下是我在互联网上找到的代码:

if (Meteor.isServer) {

    logger.info("OVERRIDING METEOR FUNCTION");
    // Override Meteor.Error function to log it
    const errorFunc = Meteor.Error;
    Meteor.Error = function(error, reason, details) {
        console.log("TEST");
        console.log(error);
        console.log(reason);
        console.log(details);
        logger.error('Error: ' + error, {
            error: error,
            reason: reason,
            details: details,
            stack: Error().stack,
            tags: ['error']
        });
        errorFunc.call(this, error, reason, details);
    };
    throw new Meteor.Error("PATATRA", "PTOEOEORORE");
}

Winston记录错误,但在调用原始Meteor.Error后,该方法失败并显示以下消息:

(STDERR) /home/me/.meteor/packages/meteor-tool/.1.6.0_1.15l6i5x.c6ri++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280
(STDERR)                        throw(ex);
(STDERR)                        ^
(STDERR) [object Object]

我想找到一种方法来正确包装Meteor.error方法。

1 个答案:

答案 0 :(得分:0)

我认为仅删除throw new Meteor.Error("PATATRA", "PTOEOEORORE");仍将执行默认的new Meteor.Error()代码。