繁体   English   中英

无法从第三方图书馆捕获未处理的Promise拒绝

[英]Can't catch an unhandled Promise rejection from 3rd party library

我正在使用第三方库在我的nodejs后端代码中进行异步调用。 有一个未处理的承诺拒绝来自这个电话我无法抓住。 (它关闭了我的节点应用程序。)

根据传递的输入,有时会失败:

exports.getSomeData = (input) => {
    console.log('GETTING DATA...')
    return ThirdPartyLib.makeAsyncCall(input).then((result) => {
        console.log('SUCCESS');
        return result;
    },(rejection) => {
        console.log('REJECTED');
        return {};
    }).catch(error => {
        console.log('ERROR');
        return {};
    });
}

但是当它失败时,没有任何REJECTED / ERROR消息打印出来。 我只是看到来自lib的控制台消息: Unhandled rejection at: Promise和我的应用程序关闭。

我是否错过了处理不快乐路径的方式?

库代码是否可以执行以上操作无法捕获的内容?

库代码是否可以执行以上操作无法捕获的内容?

当然,它只需要创建一个Promise(例如通过调用异步函数)而不将它链接到promise链(也就是没有await它):

  async makeAsyncCall(data) {
    Promise.reject("Possible");
  }

所以,是的,你正在使用的库要么等待分离的promise,要么它应该附加一个错误处理程序(并处理/故意忽略错误)。 这不是你的错。

除了双拒绝处理程序(这是没有意义的,只需使用catch() ),您的代码应该正常工作。

因此,鉴于您看到了该错误,这意味着您使用的库存在错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM