Angular 5应用程序无法在ios8中工作(Browserstack)

我在运行IOS8(Safari)和Browserstack的iPhone 6上测试了我的Angular 5应用程序。 角度应用程序不运行,我只是得到一个空页面和这个Javascript错误。

有什么建议么?

在此处输入图像描述

这是我的package.json文件。 我想我在这里添加的一些包会导致一些冲突并阻止应用程序显示。 以前我有应用程序能够在IOS8中运行,但这是使用Angular 4.4而我没有使用mdbootstrap库。

{ "name": "XXXX", "version": "1.0.0", "license": "MIT", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e", "i18n": "ng-xi18n" }, "private": true, "dependencies": { "@agm/core": "^1.0.0-beta.2", "@angular-devkit/schematics": "0.0.34", "@angular/animations": "^5.0.3", "@angular/common": "^5.0.3", "@angular/compiler": "^5.0.3", "@angular/core": "^5.0.3", "@angular/forms": "^5.0.3", "@angular/http": "^5.0.3", "@angular/platform-browser": "^5.0.3", "@angular/platform-browser-dynamic": "^5.0.3", "@angular/router": "^5.0.3", "applicationinsights-js": "^1.0.8", "bootstrap": "^3.3.7", "bootstrap-select": "^1.12.4", "chart.js": "^2.5.0", "core-js": "^2.4.1", "easy-pie-chart": "^2.1.7", "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", "jquery": "^3.2.1", "libphonenumber-js": "^0.4.40", "ng-autosize": "^1.1.0", "ng-mdb-pro": "XXXX", "npm-check-updates": "^2.13.0", "rxjs": "^5.4.2", "screenfull": "^3.3.0", "zone.js": "^0.8.14" }, "devDependencies": { "@angular/cli": "^1.5.5", "@angular/compiler-cli": "^5.0.3", "@angular/language-service": "^4.3.0", "@types/applicationinsights-js": "^1.0.2", "@types/jasmine": "~2.8.2", "@types/jasminewd2": "~2.0.2", "@types/node": "~6.0.60", "codelyzer": "~4.0.1", "jasmine-core": "^2.8.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~1.7.0", "karma-chrome-launcher": "~2.2.0", "karma-cli": "~1.0.1", "karma-coverage-istanbul-reporter": "^1.2.1", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "karma-junit-reporter": "^1.2.0", "protractor": "~5.2.0", "ts-node": "~3.3.0", "tslint": "^5.3.2", "typescript": ">=2.4.2 <2.5.0" } } 

有类似的问题。 它应该通过提供正确的polyfill来解决。

您可以在https://angular.io/guide/browser-support找到浏览器支持信息

如果你使用JIT编译器(而不是AOT),那么safari需要至少ES7reflectionpolyfill。 Safari 7和8也需要ES6

如果您仍然使用旧的基于intl的管道,那么不要忘记包含它们。

对于较旧的浏览器, core-js/es/...导入通常可以解决问题。

转到src/polyfills.ts并启用所需的polyfill。

在生成的项目的自述文件中还提到了一个获取的polyfill,它不包含在polyfill.ts

import 'whatwg-fetch'; // Run `npm install --save whatwg-fetch`

$ ng build --mangle safari10=true --prod