Angular - 'Не вдалося знайти HammerJS'


94

Я працюю над простим кутовим проектом, де намагаюся імпортувати Material Design у свій проект, але деякі компоненти не працюють належним чином, і попередження консолі говорить:

Не вдалося знайти HammerJS. Деякі компоненти кутового матеріалу можуть працювати неправильно.

Я hammerjsвстановив, а також @angular/material. Як вирішити цю проблему?



Сіденоте

Можливо, варто зазначити, що якщо ви hammerjsвстановили, і ваші компоненти все ще не відображаються належним чином, переконайтеся, що ви використовуєте angular material компоненти, а не елементи html з materialize-css класами . Якщо будуть використовуючи materialize-cssзамість angular material, вам потрібно буде додати його в свій проект окремо.

Відповіді:


162

У своєму package.jsonфайлі додайте це доdependencies

"hammerjs": "^ 2.0.8",

Або якщо ви хочете альтернативний автоматичний спосіб, просто введіть npm i hammerjs --save(або npm i hammerjs@2.0.8 --saveякщо хочете, оскільки 2.0.8це остання версія сьогодні) у свою кореневу папку проекту та протестуйте, якщо проблема все ще виникає, спробуйте видалити node_modulesпапку та перевстановити її в кореневій папці також запустіть папку проекту , npm installяка перевірить dependencies( де hammerjsзнаходиться ), devDependencies..., у package.jsonфайлі та встановить їх.

Також у вашому polyfills.ts(рекомендується мати такий, якщо у вас його немає)

імпорт 'hammerjs / hammer';

Таким чином, його можна буде знайти під час виконання вашого кутового додатка, оскільки polyfills.tsсаме воно викликається імпортом (у звичайному випадку, інакше ви можете це перевірити), в main.tsякому є точкою входу кутових програм.


9
додавання оператора імпорту до polyfills.tsтихого попередження, що чудово! Але компоненти матеріального дизайну все ще відображаються неправильно: / Я включу скріншот в опис питання. Дякуємо за вашу допомогу!
— Данорам

2
немає. але я обов’язково перевіряю, як тільки знайду рішення.
— Данорам

2
Здається, я забув додати посилання css у свій index.htmlфайл. вупсі .. Зараз все виглядає добре. Вітаємо за допомогу!
— Данорам

3
Я не використовую жодного з необхідних компонентів hammer. Чи є спосіб вимкнути ці попередження? Я отримую близько 30 таких у своїх тестах.
— CWSpear

1
імпорт 'hammerjs / hammer';
— прибране

102

Встановіть hammerjs

  • з npm

    npm install --save hammerjs
  • (або) з пряжею

    yarn add hammerjs

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

import 'hammerjs';




1
ах гарна відповідь, мені було байдуже думати, що це, мабуть, може знати багато людей, які знаходять це запитання
— Данорам,

7
Це повинна бути правильна відповідь. Крім того, слід додати import 'hammerjs';до кожного *.spect.tsтестового файлу, що використовує компоненти матеріалу, щоб виправити попередження під час запуску ng test.
— Cartucho

3
Мені не потрібно було змінювати, tsconfig.jsonале імпорт працює, дякую за відповідь.
— Неправдивий

якщо вам потрібно додати імпорт до кожного файлу специфікації, чи не повинен бути спосіб додати його до файлу karma.conf?
— Джефф,

Зазначене джерело каже, import it on your app's entry point (e.g. src/main.ts)а не в app.module.ts. Очевидно, все одно це насправді не має значення.
— Stack

9

У своєму systemjs.config.jsфайлі також потрібно додати такий запис:

'hammerjs': 'npm:hammerjs/hammer.js',

поряд із звичайно:

'@angular/material': 'npm:@angular/material/bundles/material.umd.js',

Інше, чого не вистачає у вашому коді (принаймні, виходячи з того, що у вас є в репозиторії GH), це включення CSS Material Design, додайте це у свій index.htmlфайл:

<link href="https://rawgit.com/angular/material2-builds/master/core/theming/prebuilt/indigo-pink.css" rel="stylesheet">

Я сподіваюся, що це допомагає.


Вибачте, що так довго повернувся до вас. Я не думаю, що мій проект використовує systemjs. хоча ти маєш рацію щодо того, що я забув імпортувати css! велике спасибі, що зараз виглядає правильно!
— Данорам

6

це працювало у мене (і це також з ionic4), я міг би зробити роботу hammer.js - а також ionic з material.angular.io (внизу)

Молоток + іонний (молоток + також кутовий):

npm install --save hammerjs
npm install --save @types/hammerjs

тоді

package.json
make sure in dependencies there is this line
"hammerjs": "^2.0.8",

тоді

tsconfig.json - added types as seen below

"compilerOptions": {
...
...
"types": [
"hammerjs"
]
}

тоді

in app.component.ts (only there)
import 'hammerjs';

тоді

in html file (I just took out the first and last < > signs)
div id="myElement"></div
in .ts file

Зразок коду з сайту hammerjs працює

let element2 = document.getElementById('myElement');
let hamming = new Hammer(element2);
hamming.on("panleft panright tap press pressup", function(ev) {
    element2.textContent = ev.type +" gesture detected.";
    console.log(ev.type +" gesture detected.");
});

Молоток + іонний + матеріал: щоб молоток з матеріалу працював з іонним

in app.module
import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import { GestureConfig } from '@angular/material';

providers: [
    { provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig },
]

і вуаля, ваш повзунок матеріалу працює.


3

Відкрийте свій командний рядок або PowerShell, введіть каталог вашого проекту angular2:, cd your-project's-rootнатисніть Enter і вставте:

npm install hammerjs --save

Npm автоматично додасть усі залежності до вашого package.jsonфайлу.


Версія @torazaburo Hammerjs на npm часто оновлюється, тому OP може бути впевнений, що якщо він встановить hammerjs за допомогою команди npm, вона буде оновлена ​​і працює.
— добрий користувач

@torazaburo Чесно кажучи, я не використовував --save, встановлюючи його до npm, і все пройшло без проблем, але оскільки ви досвідчений користувач, було б необережно сперечатися з вами.
— добрий користувач

Я думаю, що --saveце більше не потрібно, оскільки воно буде використовуватися автоматично. docs.npmjs.com/cli/install
— Помилковий

1
Якщо ви пропустите його, --saveвін все одно буде працювати, але він не буде доданий до файлу package.json, а це означає, що він не буде автоматично встановлений під час запуску npm installв майбутньому
— Ніклас,

2
  1. npm встановити hammerjs --save
  2. npm install @ types / hammerjs --save-dev
  3. додати це до typecript.config під параметрами компілятора

    "types": ["hammerjs"]

  4. додати це до app.components.ts:

молотки


ВИ, сер, ви рятувальник, і якщо мені коли-небудь вдасться отримати другого сина, його зватимуть на честь вас!
— кодування Будди

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.