Не удалось найти HammerJS в angular 6

В своем проекте я использую angular-material. Я получаю следующие предупреждения:

Could not find HammerJS. Certain Angular Material components may not work correctly.

The "longpress" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.

Я знаю, что это дубликат этого вопрос

В ответ они отметили, что:

  1. Мы должны добавить "^2.0.8", к dependencies в файле package.json.
  2. импортировать 'hammerjs/hammer'; в файл polyfills.ts.

В моем случае все в порядке, но я получаю такое же предупреждение в консоль браузера.

Не могли бы вы добавить демонстрацию / код для воспроизведения проблемы?

Just code 01.10.2018 07:44

На самом деле я пытался дать ссылку на stackblitz. Когда я пробовал использовать stackblitz, он не показывает это предупреждение.

PGH 01.10.2018 07:46

Добавить сюда в комментариях?

Just code 01.10.2018 07:46

У меня много компонентов, я не могу найти, для какого компонента отображается это предупреждение.

PGH 01.10.2018 07:48

Должен ли я опубликовать файл package.json?

PGH 01.10.2018 08:10

Выполните npm prune и npm i

Vikas 01.10.2018 09:15

Добавьте hammerjs из node_modules в angular.json, а затем перезапустите проект.

Sina Lotfi 20.04.2019 14:04
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
59
7
48 723
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Есть 2 способа решить эту проблему:

  1. Либо включите импорт (главный) в файл основного модуля, либо polyfills.ts:

    import 'hammerjs';
    
  2. Или включите скрипт из CDN в ваш файл index.html:

    <head>
      <!-- ... -->
      <script src = "https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
      <!-- ... -->
    </head>
    
import 'hammerjs'; решил мою ошибку, большое спасибо за это. На самом деле ранее я импортировал (hammerjs) в основной файл модулей, например import {} from 'hammerjs';. Это неправильно ??
PGH 03.10.2018 10:43

@PrashanthGH Нет. Просто импортируйте сам модуль. Этот синтаксис не будет ничего импортировать для использования в проекте. Однако при импорте модуля (возможно) импортируются все модули.

Edric 03.10.2018 12:19

с angular6 вы можете включить путь hammerjs в node_modules в файле angular.json.

Угловой документ говорит, что цель файла angular.json -

CLI configuration defaults for all projects in the workspace, including configuration options for build, serve, and test tools that the CLI uses, such as TSLint, Karma, and Protractor. For details, see Angular Workspace Configuration.

Вы можете включить путь к модулю узла hammerjs в список скриптов. см. ниже пример:

 "projects": {
    "demo": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/demo",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets",
              "src/manifest.json"
            ],
            "styles": [
              "src/styles.css"
            ],
            "scripts": [
              "node_modules/hammerjs/hammer.min.js" <- add path to hammerjs
            ]
          },
          "configurations": {
          ....

Обратите внимание, что вам нужно перезапустить ng serve, чтобы он вступил в силу.

Это сработало, обратите внимание, что необходимо остановить и перезапустить проект, чтобы этот файл был поднят.

levelonehuman 09.05.2019 16:41

Установить с помощью

npm install --save hammerjs

или

yarn add hammerjs

После установки импортируйте его в точку входа вашего приложения (например, src / main.ts).

import 'hammerjs';

Руководство по началу работы с Angular Material

Добавление Hammer js на глобальном уровне проекта

"scripts": [
              "node_modules/hammerjs/hammer.min.js" <- add path to hammerjs
            ]

Дополнение на уровне модуля

import * as Hammer from 'hammerjs';

Для новых версий Angular Material при установке Material вам просто нужно запустить

ng add @angular/material

Он спросит у вас что-то вроде этого

Set up HammerJS for gesture recognition?

Вы должны ответить «Y», и он автоматически настроит для вас HammerJS.

Руководство по установке углового материала: https://material.angular.io/guide/getting-started#install-angular-material

Другие вопросы по теме