Angular - 'Tidak dapat menemukan HammerJS'


94

Saya sedang mengerjakan proyek bersudut sederhana di mana saya mencoba mengimpor Desain Material ke dalam proyek saya tetapi beberapa komponen tidak berfungsi dengan baik dan peringatan konsol mengatakan:

Tidak dapat menemukan HammerJS. Komponen Material Angular tertentu mungkin tidak bekerja dengan benar.

Saya telah hammerjsmenginstal dan juga @angular/material. Bagaimana cara mengatasi masalah ini?



Sidenote

Perlu dicatat bahwa jika Anda telah hammerjsmenginstal dan komponen Anda masih tidak dirender dengan benar untuk memastikan Anda menggunakan angular material komponen dan bukan elemen html dengan materialize-css kelas . Jika Anda sedang menggunakan materialize-cssbukan angular material, Anda akan perlu untuk menambahkannya ke proyek Anda secara terpisah.

Jawaban:


162

Di package.jsonfile Anda, tambahkan ini kedependencies

"hammerjs": "^ 2.0.8",

Atau jika Anda menginginkan cara otomatis alternatif, Anda dapat mengetik npm i hammerjs --save(atau npm i hammerjs@2.0.8 --savejika Anda ingin, karena 2.0.8versi terbaru sekarang) di folder proyek root Anda dan uji kemudian, jika masalah masih terjadi coba hapus node_modulesfolder dan instal ulang di root folder proyek juga dengan menjalankan npm installyang akan memeriksa dependencies(di mana hammerjsberada ), devDependencies..., dalam package.jsonfile dan menginstalnya.

Juga di Anda polyfills.ts(disarankan untuk memilikinya jika Anda belum)

mengimpor 'hammerjs / hammer';

Jadi, itu akan ditemukan saat aplikasi sudut Anda dijalankan karena polyfills.tsitu sendiri dipanggil oleh impor (dalam kasus normal, jika tidak Anda dapat memeriksanya) di main.tsmana titik masuk aplikasi sudut.


9
menambahkan pernyataan import untuk polyfills.tsmembungkam peringatan, yang bagus! Tetapi komponen desain material masih belum dirender dengan benar: / Saya akan menyertakan tangkapan layar dalam deskripsi pertanyaan. Terima kasih atas bantuan Anda sejauh ini!
Danoram

2
tidak. tetapi saya pasti akan memeriksanya kembali setelah saya menemukan solusi.
Danoram

2
Sepertinya saya lupa menambahkan tautan css ke index.htmlfile saya . whoopsie .. Semua terlihat baik-baik saja sekarang. Bersulang untuk bantuannya!
Danoram

3
Saya tidak menggunakan salah satu komponen yang perlu hammer. Apakah ada cara untuk menonaktifkan peringatan ini? Saya mendapatkan sekitar 30 dari ini dalam pengujian saya.
CWSpear

1
mengimpor 'hammerjs / hammer'; menghapus peringatan untuk saya
silentsudo

102

Pasang hammerjs

  • dengan npm

    npm install --save hammerjs
  • (atau) dengan benang

    yarn add hammerjs

Kemudian impor hammerjsdi titik masuk aplikasi Anda (mis. Src / main.ts).

import 'hammerjs';




1
ah jawaban yang bagus, saya tidak peduli untuk berpikir bahwa mungkin inilah yang mungkin ingin diketahui oleh banyak orang yang merasa pertanyaan ini
Danoram

7
Ini harus menjadi jawaban yang benar. Selain itu, Anda harus menambahkan import 'hammerjs';di setiap *.spect.tsfile pengujian yang menggunakan komponen material untuk memperbaiki peringatan saat dijalankan ng test.
Cartucho

3
Saya tidak perlu mengubah tsconfig.jsontetapi impor berfungsi, terima kasih atas jawabannya.
Spurious

jika Anda harus menambahkan impor ke setiap file spesifikasi, bukankah seharusnya ada cara untuk menambahkannya ke file karma.conf?
Jeff

Sumber yang dikutip mengatakan import it on your app's entry point (e.g. src/main.ts)daripada di app.module.ts. Jelas, itu sebenarnya tidak masalah.
Stack Underflow

9

Di systemjs.config.jsfile Anda, Anda juga perlu menambahkan entri berikut:

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

bersama dengan tentu saja:

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

Hal lain yang hilang dari kode Anda (setidaknya berdasarkan apa yang Anda miliki di repo GH) adalah penyertaan CSS Desain Material, tambahkan ini ke index.htmlfile Anda :

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

Saya harap ini membantu.


Maaf butuh waktu lama untuk menghubungi Anda kembali. Saya tidak berpikir proyek saya menggunakan systemjs. meskipun Anda benar tentang saya lupa mengimpor css! terima kasih banyak sekarang terlihat benar!
Danoram

7

ini bekerja untuk saya (dan ini dengan ionic4 juga) saya bisa membuat hammer.js bekerja - dan juga ionic dengan material.angular.io (di bawah)

Palu + ionik (palu + sudut juga):

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

kemudian

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

kemudian

tsconfig.json - added types as seen below

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

kemudian

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

kemudian

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

Kode sampel dari karya situs 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.");
});

Hammer + material + ionic +: untuk membuat material hammer bekerja dengan ionic

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

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

dan voila, slider material Anda berfungsi.


3

Buka baris perintah atau PowerShell Anda, ketik direktori proyek angular2 Anda:, cd your-project's-roottekan enter dan paste:

npm install hammerjs --save

Npm secara otomatis akan menambahkan semua dependensi ke dalam package.jsonfile Anda .


Versi @torazaburo Hammerjs di npm sering diperbarui sehingga OP dapat memastikan bahwa jika dia menginstal hammerjs dengan menggunakan perintah npm, itu akan diperbarui & berfungsi.
pengguna yang baik

@torazaburo Sejujurnya saya tidak menggunakan --savesaat menginstalnya oleh npm dan semuanya berjalan lancar, tetapi karena Anda adalah pengguna yang sangat berpengalaman, tidak bijaksana untuk berdebat dengan Anda.
jenis pengguna

Saya rasa --savesudah tidak perlu lagi karena akan digunakan secara otomatis. docs.npmjs.com/cli/install
Spurious

1
Jika Anda mengabaikannya, --saveitu akan tetap berfungsi, tetapi tidak akan ditambahkan ke file package.json, yang berarti bahwa itu tidak akan diinstal secara otomatis saat berjalan npm installdi masa mendatang
Niklas

2
  1. npm install hammerjs --save
  2. npm install @ types / hammerjs --save-dev
  3. tambahkan ini ke typescript.config di bawah opsi kompiler

    "jenis": ["hammerjs"]

  4. tambahkan ini ke app.components.ts:

hammerjs


ANDA tuan, adalah penyelamat dan jika saya berhasil mendapatkan putra kedua, dia akan dinamai menurut nama Anda!
codingbuddha

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.