Angular 7项目在Internet Explorer 11中无法正常工作

TAB*_*TAB 7 internet-explorer angular

我已经完成了互联网上不同帖子中提到的所有内容,但是我的问题仍然存在。

我未评论IE 9、10、11所需的polyfill

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
Run Code Online (Sandbox Code Playgroud)

我在index.html中应用了meta标签

<meta http-equiv="X-UA-Compatible" content="IE=edge" >
Run Code Online (Sandbox Code Playgroud)

但是在IE 11中工作时仍然出现错误:

  • SCRIPT438:对象不支持属性或方法'bind'runtime.js(208,11)

  • 脚本1010:预期的标识符polyfills.js(3846,36)

  • 脚本1010:预期的标识符styles.js(310,24)

  • SCRIPT1028:期望的标识符,字符串或数字vendor.js(298,5)

  • SCRIPT1010:预期的标识符main.js(1424,32)

编辑1 这是我的tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ],
    "paths": {
      "jszip": [
        "../node_modules/jszip/dist/jszip.min.js"
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

任何帮助将不胜感激。

Ene*_*rgy 6

我通过以下4个步骤解决了这个问题!对您来说,从步骤3开始。

  1. 在您的项目中找到polyfill.ts

  2. 取消注释所有评论的导入-保存

  3. 在npm以下安装

    • npm install-保存classlist.js
    • npm install-保存web-animations-js
  4. ng服务

信用:https//blog.angularindepth.com/angular-and-internet-explorer-5e59bb6fb4e9

  • 即使我按照上述所有步骤操作,我仍然出现白屏。 (2认同)
  • 相同的。对于每个人来说,这不完全是一个 Polyfill 问题。我在路由器跟踪日志中注意到一些奇怪的事情(enableTracing:true,在路由器模块的配置中)...在相对路径方面,IE 似乎处理基本标记的方式与其他浏览器非常不同,并且没有看到url 中 # 后面的查询字符串参数。 (2认同)

Mar*_*ine 5

升级到angular v8什么呢?

自上一个主要版本以来,构建过程已针对旧浏览器进行了优化。

在Angular CLI版本8和更高版本中,使用差异加载来构建应用程序,该策略是CLI会构建两个单独的捆绑软件作为已部署应用程序的一部分。

  • 第一个捆绑包包含现代ES2015语法,利用了现代浏览器中的内置支持,减少了polyfill的发布,并减小了捆绑包的大小。

  • 第二个捆绑包包含旧ES5语法中的代码以及所有必要的polyfill。这会导致更大的捆绑包大小,但支持较旧的浏览器。

IE开发

自从将angular升级到v8以来,您应该看看/sf/answers/3960115561/以解决开发模式和CSS上的某些问题

  • 好的,已修复!我们不仅必须升级到A8,而且还要更改tsconfig(如OP中所述,特别是“ target”:“ es5”),最终不得不在构建中设置deploy-url和base-href命令,因为由于未知原因未观察到索引文件中的基本标记。(https://shekhargulati.com/2017/07/06/angular-4-use-of-base-href-and-deploy-url-build-options/) (2认同)
  • 太好了!对不起,我会说清楚的。从angular 8开始,您必须添加一些配置才能在开发模式下使用IE。但是你找到了解决方案 (2认同)
  • 是的,我们的开发版本运作良好...生产版本才是问题所在。很高兴为此找到解决方案。再次感谢! (2认同)