错误出现原因:
今天突然被告知自己写的Angular项目在微软的Edge里显示不了了,而且360浏览器也不行了。
后来发现是浏览器版本问题,我的是最新版显示没有问题,而别人用的浏览器版本较旧【这里的较旧指的相对于我的最新版本的来说的】。
让用户更新是一个可行的方案,还有就是我们开发者看看怎么搞一下了。
首先打开旧Edge版本控制台上,控制台上报了一个错误:
Error: Zone.js has detected that ZoneAwarePromise (window|global).Promise
has been overwritten. Most likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)
谷歌是这么翻译上面英语的:
错误:Zone.js检测到ZoneAwarePromise(window | global).Promise已被覆盖。 最可能的原因是在Zone.js之后加载了Promise polyfill(加载zone.js时不需要填充Promise api。如果必须加载,则在加载zone.js之前执行。)
解决方案:
polyfill.ts
里import 'zone.js/dist/zone'
的这一行提到main.ts
里,我试了一下,没解决。polyfill.ts
里import 'zone.js/dist/zone'
这一行前面,引入import 'core-js/es/promise'
。问题解决。
当然我这个解决方案,可能存在特殊性,如果你有更好的方法,欢迎留言。