【问题标题】:Angular 2+: Multiple definitions of a property not allowed in strict mode in IE11Angular 2+:在 IE11 中的严格模式下不允许属性的多个定义
【发布时间】:2017-11-15 15:38:13
【问题描述】:

我有我的 pollyfills,我从我的 main.bundle.js 中的 Internet Explorer 11 收到此错误。它在第 9692 行,但查看编译后的代码,我无法理解它。这里是:

    styles: ["\nng-select-custom >>> .caret {\n  /* display: none; */\n}\nng-select-custom >>> .ui-select-match-text {\n  white-space: normal;\n  line-height: 21px;\n}\nng-select-custom >>> .ui-select-toggle {\n  overflow: hidden;\n}\n"]

这是 Angular 2+ 的常见问题吗?我没有看到任何关于 NG2+ 的帖子。

更新:这里是有关代码的更多上下文:

DropdownRuleInputComponent = __decorate([
    __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Component"])({
        selector: 'dropdown-rule-input',
        template: "\n  <ng-select-custom\n    [class.invalid]=\"invalidShowing\"\n    [items]=\"items\"\n    [active]=\"activeSelection\"\n    (selected)=\"selection = $event\"\n    placeholder=\"Click for options\">\n  </ng-select-custom>\n  ",
        styles: [__webpack_require__("../../../../../../pushgraph-client/lib/search/rule-inputs/default-styles.sass")],
        styles: ["\nng-select-custom >>> .caret {\n  /* display: none; */\n}\nng-select-custom >>> .ui-select-match-text {\n  white-space: normal;\n  line-height: 21px;\n}\nng-select-custom >>> .ui-select-toggle {\n  overflow: hidden;\n}\n"]
    }),
    __metadata("design:paramtypes", [typeof (_d = typeof __WEBPACK_IMPORTED_MODULE_3__shared_search_service__["a" /* SearchService */] !== "undefined" && __WEBPACK_IMPORTED_MODULE_3__shared_search_service__["a" /* SearchService */]) === "function" && _d || Object])
], DropdownRuleInputComponent);

【问题讨论】:

    标签: javascript angular typescript internet-explorer internet-explorer-11


    【解决方案1】:

    我有同样的问题,它仍然存在于 Angular 中。

    错误原因

    SyntaxError: Multiple definitions of a property not allowed in strict mode
    

    原因是:您已将styleUrlsstyles 添加到一个组件中。 您可以在粘贴的 webpack 包代码中清楚地看到它们,styles 属性被创建了 2 次。

    奇怪的是只有 IE 11 有问题:)


    解决方案

    重新排列样式并删除 stylesstyleUrls。只留下其中一个。

    IE11 组件损坏示例

    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css'],
      // with both `styleUrls` and `styles` IE11 crashes
      styles: [`
        h2 {
          color: red;
        }
      `]
    })
    export class AppComponent {}
    

    繁殖环境

    我已经在新的 Angular 版本上检查过它,但它仍然是一个问题:

    Angular: 5.2.9
    ... animations, common, compiler, compiler-cli, core, forms
    ... http, language-service, platform-browser
    ... platform-browser-dynamic, router
    
    @angular/cli: 1.7.4
    @angular-devkit/build-optimizer: 0.3.2
    @angular-devkit/core: 0.3.2
    @angular-devkit/schematics: 0.3.2
    @ngtools/json-schema: 1.2.0
    @ngtools/webpack: 1.10.2
    @schematics/angular: 0.3.2
    @schematics/package-update: 0.3.2
    typescript: 2.5.3
    webpack: 3.11.0
    

    【讨论】:

    • 酷!...这是很久以前的事了,我不记得我们是怎么解决的。大概想出了一个解决办法。您是否确认 IE11 确实输出了相同的错误? Github 上有关于这个问题的任何信息吗?
    • ...好吧,现在我隐约记得弄清楚了这一点。我回到了 git 历史,看看我们在哪里修复了它。很确定我没有在这里回答这个问题,因为我们正处于如此疯狂的推动下才能完成这个项目。感谢您回答问题!
    • 是的 - 我昨天在为我们的应用程序添加 IE11 支持时解决了这个问题 :) 好点 - 我将粘贴错误,以便更好地发现。
    【解决方案2】:

    我相信它会抱怨这个ng-select-custom &gt;&gt;&gt;。我的语法有host: &gt;&gt;&gt;。不太确定是否缺少导致此问题的 host 变量。

    【讨论】:

    • 我完全不熟悉这种语法,也不熟悉如何更改 Webpack/Angular-CLI 的输出。
    • 这两个链接更详细地说明了这一点。 stackoverflow.com/questions/32853924/… alligator.io/angular/styles-between-components-angular 能否给我们提供多一点的代码而不是一行代码,以便我们理解。
    • 我已经更新了问题。感谢您迄今为止的帮助。
    • 这段代码是如何编译的。因为我之前从未见过任何添加\n和``的东西?
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多