Reputation: 764
I have an angular application that works fine on all browsers, including IE11. However, in several cases (still not sure why), IE will throw a TypeError, which is caused by Angular CDK platform umd javascript:
var hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
Which is minified to:
o="undefined"!=typeof Intl&&Intl.v8BreakIterator
The error is:
TypeError: Intl is not available
My question is, in general, what does "TypeError: xxx is not available" mean, and more specifically, if there is any reason this will come up.
Upvotes: 5
Views: 2560
Reputation: 764
This was confirmed to be caused by installing KB4489881 update on Windows. The update added some logic code snippet to check whether the machine is Win8.
If it’s Win 8, IE will avoid loading Windows.Globalization.dll and continue to load jsIntl.dll.
This works fine for IE11 and the Weboc with manifest file which used to targeting the app to Windows 8.1 or Windows 10. However, if the weboc has no specified manifest file, then the version detection would return as Windows 8 version (6.2.0.0) even if runs on Windows 8.1 or Windows 10.
The following article clarify the issue on what needs to be done from your side:
Targeting your application for Windows https://learn.microsoft.com/en-us/windows/desktop/SysInfo/targeting-your-application-at-windows-8-1
Also, a workaround was issued to the angular package: https://github.com/angular/material2/pull/15693
Upvotes: 4