是什么导致 React 中出现警告“Removing intrinsics.%ArrayPrototype%.toReversed”?
我在我的应用程序first load
时收到以下warning
。
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toReversed
intrinsics.%ArrayPrototype%.@@unscopables.toSpliced
intrinsics.%ArrayPrototype%.@@unscopables.toSorted
我真的不知道这是怎么回事,所以我之前没有尝试过任何东西。
我进入node_modules
试图找到与之相关的东西...一直在互联网上甚至在chatGPT上搜索,但我发现的信息很模糊。
在你发表这篇文章的时候,我随机开始在我的项目中得到这个,这很奇怪。
您是否安装了 Metamask 作为浏览器扩展?我禁用了扩展程序,警告就消失了。
我找到了这篇文章: https://github.com/MetaMask/eth-phishing-detect/issues/11900,这可能表明我们项目中的某些内容正在以某种方式触发metamasks反网络钓鱼功能?我不太确定,但禁用扩展功能后,警告就消失了,并确认这不是我的应用程序中直接存在的问题。
警告来自 MetaMask Chrome 扩展,而不是您的 React 应用程序。
作为一项安全措施,MetaMask 似乎会检查其环境中的原生原型,看看它们是否已被变异或篡改。
到了ES2023,一些原生原型获得了新的方法,比如toSorted
、toReversed
等。看起来 MetaMask 没有更新,不知道这些方法,因此它认为本地原型已发生变异或改变。基本上,MetaMask 只是从原型中删除这些“未知”方法,然后将其记录在控制台上。
如果您去检查您的 MetaMask 扩展弹出窗口并在控制台中写入 [].toSorted
,您将得到未定义的结果,因为 MetaMask 已删除它们,因为它无法识别它们。
您不必执行任何操作,您可以暂时忽略它们,直到 MetaMask 更新为止。
我发现了导致这个问题的原因——Metamask扩展的质量差,而且当他们试图解决一个问题时,乌龟的速度也很慢。
在Brave和Chrome上都出现了同样的错误,我想这是一个metamask bug。在刷新应用程序时,我退出了我的应用程序,我必须每次都签署授权,虽然当使用链接和移动应用程序而不重新加载时,它工作得很好。