gpt4 book ai didi

javascript - 使用 React 时无法从 window.onerror 获取错误对象

转载 作者:行者123 更新时间:2023-12-02 14:57:48 25 4
gpt4 key购买 nike

window.onerror = function(message, filename, lineno, colno, error) {
console.log(error.stack);
};

没有reactjs,一切都很好。我可以获得堆栈。

使用 reactjs 我得到以下结果:

Uncaught TypeError: Cannot read property 'stack' of null
window.onerror @ index.html:9
ReactErrorUtils.invokeGuardedCallback @ ReactErrorUtils.js:71
executeDispatch @ EventPluginUtils.js:79
executeDispatchesInOrder @ EventPluginUtils.js:102
executeDispatchesAndRelease @ EventPluginHub.js:43
executeDispatchesAndReleaseTopLevel @ EventPluginHub.js:54
forEachAccumulated @ forEachAccumulated.js:23
EventPluginHub.processEventQueue @ EventPluginHub.js:259
runEventQueueInBatch @ ReactEventEmitterMixin.js:18
ReactEventEmitterMixin.handleTopLevel @ ReactEventEmitterMixin.js:34
handleTopLevelWithoutPath @ ReactEventListener.js:93
handleTopLevelImpl @ ReactEventListener.js:73
Mixin.perform @ Transaction.js:136
ReactDefaultBatchingStrategy.batchedUpdates @ ReactDefaultBatchingStrategy.js:62
batchedUpdates @ ReactUpdates.js:94
ReactEventListener.dispatchEvent @ ReactEventListener.js:204

在文件ReactErrorUtils.js中:

if (process.env.NODE_ENV !== 'production') {
/**
* To help development we can get better devtools integration by simulating a
* real browser event.
*/
if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
var fakeNode = document.createElement('react');
ReactErrorUtils.invokeGuardedCallback = function (name, func, a, b) {
var boundFunc = func.bind(null, a, b);
var evtType = 'react-' + name;
fakeNode.addEventListener(evtType, boundFunc, false);
var evt = document.createEvent('Event');
evt.initEvent(evtType, false, false);
// Line 71
fakeNode.dispatchEvent(evt);
fakeNode.removeEventListener(evtType, boundFunc, false);
};
}
}

看起来 reactjs 劫持了事件,并调度了缺少错误参数的新事件。

如何从错误中获取堆栈?

最佳答案

尽管这种情况不应该发生,但可能是 React 内部使用的类名与应用程序的类名冲突。我用 Google 搜索了这个问题,找到了一个论坛,其中有人通过更改他的类名解决了这个问题。

众所周知,React 会给出误导性的错误或给出的细节少得令人惊讶(即不变错误)

关于javascript - 使用 React 时无法从 window.onerror 获取错误对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35643738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com