【问题标题】:How to handle twilio Errors that crash nodejs如何处理导致nodejs崩溃的twilio错误
【发布时间】:2019-01-14 03:50:46
【问题描述】:

抛出错误时,使用 twilio nodejs api 会导致节点崩溃。 例如,如果房间已经存在..

/home/web/node_modules/twilio/node_modules/q/q.js:876 抛出错误;错误:房间存在

尝试 catch 没有帮助。 尝试将其包装在一个承诺中,没有运气。 尝试先获取房间,但如果房间不存在,它会以同样的方式崩溃。 试图检索所有进行中房间的列表,但它永远停止。我可以获得所有已完成房间的列表,但我需要检查正在进行的房间。 无论哪种方式崩溃节点都不好,需要能够处理这些可能性。

    exports.createBackendRoom = function (roomname, callback) {
        try {
            client.video.rooms.create({uniqueName: roomname})
            .then(function(room) {
                console.log(room);
                callback(true);
            }).done();
        } catch(e) {
            console.log(e);
            callback(false);
        }
    }

无法处理错误..

/home/web/node_modules/twilio/node_modules/q/q.js:876 抛出错误; 错误:房间存在

我该如何优雅地处理这些?

【问题讨论】:

  • 也许这对stackoverflow.com/questions/7310521/… 有帮助,或者您可以在出错时致电callback(true) 并以其他方式处理错误
  • 谢谢,这有点帮助,如果我把它放在一个域中,那么至少它不会使应用程序崩溃......例如。 d.run(function(){ client.video.rooms.create( ... 但这是最​​好的解决方案吗?

标签: node.js twilio


【解决方案1】:

尝试 catch 没有帮助。

这是因为异步操作正在引发错误。 Try-catch 会处理同步操作抛出的错误。要处理异步错误,请添加 catch(err=>{})

exports.createBackendRoom = function (roomname, callback) {
  client.video.rooms.create({uniqueName: roomname})
    .then(function (room) {
      console.log(room);
      callback(true);
    }).catch(err => {
    console.log(err); // handle error
    callback(false);
  }).done();
};

【讨论】:

    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2011-04-06
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多