Angular- 'HammerJS를 찾을 수 없습니다'


94

머티리얼 디자인을 내 프로젝트로 가져 오려고하지만 일부 구성 요소가 제대로 작동하지 않고 콘솔 경고가 표시되는 간단한 각도 프로젝트에서 작업 중입니다.

HammerJS를 찾을 수 없습니다. 특정 Angular Material 구성 요소가 제대로 작동하지 않을 수 있습니다.

나는 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_modulesnpm installdependencieshammerjsdevDependenciespackage.json

또한 귀하의 polyfills.ts(없는 경우 하나를 갖는 것이 좋습니다)

import 'hammerjs / hammer';

따라서 앵귤러 앱이 실행되는 동안 앵귤러 앱의 진입 점 인 polyfills.ts가져 오기 (일반적인 경우에는 확인할 수 있음) 에 의해 자체적으로 호출 되기 때문에 발견 main.ts됩니다.


9
import 문을 추가하면 polyfills.ts경고 가 사라집니다. 그러나 머티리얼 디자인 구성 요소는 여전히 올바르게 렌더링되지 않습니다. / 질문 설명에 스크린 샷을 포함하겠습니다. 지금까지 도와 주셔서 감사합니다!
Danoram

2
아니. 하지만 해결책을 찾으면 다시 확인하겠습니다.
Danoram

2
index.html파일에 CSS 링크를 추가하는 것을 잊은 것 같습니다 . whoopsie .. 이제 다 괜찮아 보인다. 도움을 청합니다!
Danoram

3
필요한 구성 요소를 사용하고 있지 않습니다 hammer. 이러한 경고를 비활성화하는 방법이 있습니까? 내 테스트에서이 중 30 개를 얻습니다.
CWSpear

1
import 'hammerjs / hammer'; 나를 위해 제거 경고
silentsudo

102

hammerjs 설치

  • NPM

    npm install --save hammerjs
  • (또는) 원사로

    yarn add hammerjs

그런 다음 hammerjs앱의 진입 점 (예 : src / main.ts)을 가져옵니다 .

import 'hammerjs';




1
아 좋은 대답입니다.이 질문을 찾는 많은 사람들이이 질문을 알고 싶어 할 것이라고 생각하지 않았습니다.
Danoram

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 Underflow

9

당신의에서 systemjs.config.js파일 당신은 또한 다음과 같은 항목을 추가해야합니다 :

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

물론 함께 :

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

(적어도 GH 저장소에있는 것에 따라) 코드에서 빠진 또 다른 것은 머티리얼 디자인 CSS가 포함되어 있다는 것입니다. 다음을 index.html파일에 추가하세요 .

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

이게 도움이 되길 바란다.


답장하는 데 너무 오래 걸려서 죄송합니다. 내 프로젝트가 systemjs를 사용하고 있다고 생각하지 않습니다. CSS를 가져 오는 것을 잊은 것이 맞습니다! 정말 감사합니다.
Danoram

7

이것은 나를 위해 일했습니다 (그리고 이것은 ionic4에서도 마찬가지입니다) hammer.js를 작동시킬 수 있습니다.

해머 + 이온 (해머 + 앵귤러도) :

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.");
});

Hammer + ionic + material : 재료 망치가 이온과 함께 작동하도록

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파일에 자동으로 추가 합니다.


npm의 @torazaburo Hammerjs 버전은 자주 업데이트되므로 OP는 npm 명령을 사용하여 hammerjs를 설치하면 최신 상태로 작동하는지 확인할 수 있습니다.
친절한 사용자

@torazaburo 솔직히 --savenpm으로 설치 하는 동안 사용하지 않았고 모든 것이 순조롭게 진행되었지만 경험이 많은 사용자이기 때문에 당신과 논쟁하는 것은 무례 할 것입니다.
친절한 사용자

--save자동으로 사용되기 때문에 더 이상 필요하지 않다고 생각 합니다. docs.npmjs.com/cli/install
가짜

1
당신이 생략하면 --save이 작업을 계속하지만, 그것을 실행할 때 자동으로 설치되지 않습니다 것을 의미 package.json 파일에 추가되지 않습니다 npm install미래에
니클라스

2
  1. npm install hammerjs --save
  2. npm 설치 @ types / hammerjs --save-dev
  3. 이것을 컴파일러 옵션 아래 typescript.config에 추가하십시오.

    "유형": [ "hammerjs"]

  4. 이것을 app.components.ts에 추가하십시오.

hammerjs


당신은 구세주입니다. 제가 둘째 아들을 낳으면 그는 당신의 이름을 따서 명명 될 것입니다!
codingbuddha

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.