【问题标题】:Internet Explorer says 'Invalid character in vendor.js' ( ` )Internet Explorer 显示“vendor.js 中的字符无效”(`)
【发布时间】:2019-08-09 18:56:13
【问题描述】:

Angular 7 应用程序无法在 Internet Explorer 上运行。它说 vendor.js 中的字符无效

我已经应用了 polyfills.ts 更改,但仍然无法正常工作。

我的 tsconfig.json =>

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

已解决

我发现了一个包含反引号的模块“identicons”,并将其从项目中删除,问题就解决了。谢谢大家的帮助。

【问题讨论】:

  • 这可能是因为IE可能不支持代码中使用的某些JS特性的原因。您能否查看该文件中给定行和列的代码?
  • 因为你一定用过`模板字符串(Esc下面的按钮),IE 11不支持。你应该使用 " 或 ' 作为你的字符串
  • 它是关于`字符的。在 vendor.js 中有 ` 字符,即不支持它我知道但不应该编译器将它们转换为即支持?我已经按照 pollyfills 的指示进行操作了。
  • 我认为编译器不会转换它。同样对于 polyfill,您可以在 index.html https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js 中添加此脚本
  • 您可以在另一个线程中参考my answer。并且 polyfills 仅适用于 IE11 中没有的流行使用的 es6+ 函数。如果您的代码包含更多不受支持的代码,那么您必须自己查找 polyfill。

标签: angular internet-explorer-11 angular7


【解决方案1】:

看起来该行使用了反引号,而 IE11 不支持它。 要使其正常工作,您必须使用 Babel 转译您的代码。

【讨论】:

  • 您好,感谢您的回答,我认为 babel 将解决问题,但我无法弄清楚如何在编译我的 Angular 项目期间或之后使用 babel 转换输出。有没有关于这个的方法/文档?
  • 你可以参考这个article
  • TS 目标设置为 ES5,因此可以正确转译。
  • 它是“identicons”模块!!刚从项目中删除它,错误就消失了。谢谢你们。我正在更新我的问题已解决。
【解决方案2】:

因为你肯定用过`模板字符串(Esc下面的按钮),IE 11不支持。您应该使用 " 或 ' 作为您的字符串

更多信息

https://caniuse.com/#search=string

【讨论】:

  • TS 目标设置为 ES5,因此可以正确转译。
【解决方案3】:

您的打字稿有目标es5,因此您自己的源代码中没有任何问题,因为它会转换为普通引号。

错误也来自vendor.js。这意味着您正在使用不支持 IE11 的自定义库。可能浏览错误所在的 vendor.js 会给你一个线索是哪个库导致它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多