在Cordova应用中使用iOS的WKWebView时,遇到了这个异常:
TypeError: 尝试更改不可配置属性的可配置属性。
异常发生在以下位置:
https://github.com/angular/zone.js/blob/afa1363eb9ae3be506442311a18723a112f9ef8b/lib/browser/property-descriptor.ts#L362
奇怪的是,这个异常偶尔会发生,而且我不知道如何重现它。我猜想还有其他代码覆盖了onreadystatechange
属性的XMLHttpRequest.prototype
。至少我可以确定,当错误发生时,该属性不可配置。为了证明这一点,我在那一行设置了一个断点,并检索了xhrDesc
的值。
我的建议是检查属性是否可配置,或者/以及将覆盖代码 Package 在try/catch中。如果不是或者抛出异常,canPatchViaPropertyDescriptor
可以返回false
。
4条答案
按热度按时间wlp8pajw1#
谢谢,我会检查的。
plupiseo2#
只想补充一下,我们现在也遇到了这个问题。
使用Cordova w/ WKWebView & 得到:
TypeError: Attempting to change configurable attribute of unconfigurable property.
我们正在使用Angular 7。我不确定这是否是一个影响所有在Cordova/WKWebView中运行的Angular 7应用程序的问题,或者我们的配置中包含了某种冲突的polyfill。
puruo6ea3#
嘿,@fishbone1 ,我成功追踪到我们的问题是由于使用了https://github.com/oracle/cordova-plugin-wkwebview-file-xhr插件导致的。在切换到WKWebView时,我们发现了一些CORS问题,而这个插件帮助我们绕过了这些问题。
该插件的polyfill重新定义了XMLHttpRequest的onreadystatechange属性,但没有指定
configurable:true
。稍后,Zones.js尝试配置该属性(在你提供的代码中),导致一切崩溃。yc0p9oo04#
我得到了相同的结果。