【问题标题】:Dependency on 'hammerjs'. CommonJS or AMD dependencies can cause optimization bailouts对“hammerjs”的依赖。 CommonJS 或 AMD 依赖项可能导致优化救助
【发布时间】:2021-03-05 00:06:54
【问题描述】:

我正在使用 Angular CLI 11.0.2 开发一个 Angular 应用程序,并且我在我的应用程序中使用 hammerJS 来处理滑动事件。

当我编译应用程序时,我收到以下警告消息:

Warning: F:\Programs\GoodRiddles\git\angular\src\app\config\hammerjs.config.ts depends on 'hammerjs'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

据我所知here,我应该将hammerJS 替换为ECMA 版本的库。

我的问题是: 有没有合适的方法(而不是简单地隐藏消息)来修复它?我需要改用其他库吗?

如果有帮助,我就是这样使用它的:

import { Injectable } from '@angular/core';
import { HammerGestureConfig } from "@angular/platform-browser";
import * as hammer from "hammerjs";

@Injectable()
export class HammerConfig extends HammerGestureConfig {
    overrides = <any>{
        swipe: { direction: hammer.DIRECTION_HORIZONTAL },
        pinch: { enable: false },
        rotate: { enable: false }
    };
}

【问题讨论】:

    标签: angular hammer.js


    【解决方案1】:

    将 Hammerjs 添加到 angular.json 中的 allowedCommonJsDependencies

    "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "allowedCommonJsDependencies": [
              "hammerjs" <== here
            ],...
    

    【讨论】:

    • 感谢您的回答 Tarek。但这正是我不想要的答案^^。这只会在允许的 CommonJS 依赖项中移动hammerjs。我正在寻找的是一种不会首先创建此 CommonJs 依赖项的替代方案。
    【解决方案2】:

    显然,您似乎可以通过这种方式从平台浏览器中导入hammer.js

    import { HammerModule} from '@angular/platform-browser';
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        HammerModule,
      ])
    

    注意:由于我目前正在移植该应用程序,因此我会忽略它是否按预期工作。

    【讨论】:

    • 确实它似乎按(我)预期的那样工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2020-10-16
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多