如何找到可能的未处理的承诺拒绝的来源

时间:2018-11-20 12:02:25

标签: react-native

在处理大型继承的代码库时,我偶然发现了这个不太有用的警告:

Possible Unhandled Promise Rejection (id: 0):
true

console.warn @ YellowBox.js:67
onUnhandled @ Promise.js:43
onUnhandled @ rejection-tracking.js:71
(anonymous) @ JSTimers.js:256
_callTimer @ JSTimers.js:152
callTimers @ JSTimers.js:405
__callFunction @ MessageQueue.js:349
(anonymous) @ MessageQueue.js:106
__guard @ MessageQueue.js:297
callFunctionReturnFlushedQueue @ MessageQueue.js:105
(anonymous) @ debuggerWorker.js:72

是否可以获取导致拒绝的promise的文件和行号,而无需遍历整个代码并在各处添加catch()?

2 个答案:

答案 0 :(得分:0)

您可以在根组件中执行类似的操作。

componentDidCatch(error, info) {
    console.log(error)
    console.log(info)
}
  

不要记录您的错误,而是将其发送到您的数据库,以便您可以使用更多信息来解决该问题。

Read more about componentDidCatch() life cycle method here

答案 1 :(得分:0)

解决方案是使用第三方承诺库,该库保留诸如Bluebird之类的其他堆栈跟踪,如以下答案中所述:https://stackoverflow.com/a/49129335/10236907