我有一个angular-cli项目。我也加快了步伐。我在index.html <script src="assets/lib/pace/pace.min.js"></script>
的标题中添加了它。它在chrome中正常工作,但在IE-11中我收到以下错误:
ERROR TypeError: Invalid calling object
stack: "TypeError: Invalid calling object
at scheduleTask (http://localhost:4200/polyfills.bundle.js:8607:13)
at ZoneDelegate.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6279:21)
at DELEGATE_ZS.onScheduleTask (http://localhost:4200/polyfills.bundle.js:6169:13)
at ZoneDelegate.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6273:17)
at Zone.prototype.scheduleTask (http://localhost:4200/polyfills.bundle.js:6104:17)
at Zone.prototype.scheduleMacroTask (http://localhost:4200/polyfills.bundle.js:6127:13)
at Anonymous function (http://localhost:4200/polyfills.bundle.js:8637:17)
at proto[name] (http://localhost:4200/polyfills.bundle.js:7142:17)
at Anonymous function (http://localhost:4200/vendor.bundle.js:63666:13)
at Observable.prototype._trySubscribe (http://localhost:4200/vendor.bundle.js:4172:13)",
Symbol(observable)_h.fo48yw1o6i8: undefined,
Symbol(rxSubscriber)_g.fo48yw1o6i8: undefined
我做错了什么?
答案 0 :(得分:1)
速度与zone.js v0.8.12中的更改之间存在冲突 - 有关详细信息,请参见下文。 为了解决这个问题,我确保在zone.min.js和其他IE polyfill之后加载pace.min.js,它就像一个魅力。
https://github.com/HubSpot/pace/issues/399
In the newest version of zone.js (0.8.12) using pace with it causes all XMLHttpRequests to fail with the error message:
TypeError: Unable to get property 'apply' of undefined or null reference
Please see my issue for more information. If I get time I'll try and fix the issue inside pace itself but I've already spent the good part of 3-4 hours trying to debug this issue so we'll see..
https://github.com/angular/zone.js/issues/816
After updating zone.js to the latest version (0.8.12) we started getting errors when loading an Angular page with angular/http calls in Internet Explorer 11 (works fine in Chrome). The request never initiates and there are a few errors in the console:
Unhandled Promise rejection: Unable to get property 'apply' of undefined or null reference ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Unable to get property 'apply' of undefined or null reference TypeError: Unable to get property 'apply' of undefined or null reference
at scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:142795:13)
at ZoneDelegate.prototype.scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140947:21)
at Zone.prototype.scheduleTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140772:17)
at Zone.prototype.scheduleMacroTask (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:140795:13)
at Anonymous function (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZihM_8:142824:17)
at proto[name] (https://localhost:44334/dist/vendor.js?v=OQlIcABpA29sHMIhDRnH-EBWeJs6_U6bx7vEgZ
After digging around a bit, it looks like a very new bit of code could be causing this, introduced in PR #800
The exact line of failure is below, where oriAddListener is undefined, causing the above error :
oriAddListener.apply(data.target, ['readystatechange', newListener]); // line 110
Rolling zone.js back to 0.8.11 which was before that PR fixes the issue and works as expected.
答案 1 :(得分:1)
如@Dovev Hefetz所建议并在此git线程中所讨论的,似乎可以确认脚本加载的顺序会在这种情况下影响IE行为。对于那些不确定如何在使用角度脚本编写主要脚本之后如何加载speed.min.js的人,请遵循以下简单步骤。
"zone.js": "~0.8.11"
OR
从您的 index.html 中删除单个导入:
<script src="/pace/pace.js"></script>
<link href="/pace/themes/pace-theme-barber-shop.css" rel="stylesheet" />
在您的 angular(-cli).json 中:
"styles": [
"src/assets/plugins/pace/pace-theme-flash.css",
"src/styles.scss"
],
"scripts": [
"src/assets/plugins/pace/pace.min.js"
]
就是这样!这应该确保 pace 在zone.js
奖金: Angular支持现代浏览器和Internet Explorer。为了充分利用其提供的功能,您的项目需要进行其他一些小的调整才能支持某些库。一个很好的起点是检查这个很棒的post。