Typescript react- ''react-materialize '모듈에 대한 선언 파일을 찾을 수 없습니다. 'path / to / module-name.js'에는 암시 적으로 모든 유형이 있습니다.


110

react-materialize에서 구성 요소를 가져 오려고합니다.

import {Navbar, NavItem} from 'react-materialize';

그러나 웹팩이 내 컴파일을 할 때 .tsx위와 같은 오류가 발생합니다.

ERROR in ./src/common/navbar.tsx
(3,31): error TS7016: Could not find a declaration file for module 'react-materi
alize'. 'D:\Private\Works\Typescript\QuickReact\node_modules\react-materialize\l
ib\index.js' implicitly has an 'any' type.

ts-loader.I에 대한 해결 방법이 가져 오기 문을 해결 하고 webpack 을 사용하는 방법을 잘 모르겠습니다.

index.js반응-구체화 된 모습의이를 좋아한다. 그러나 내 자신의 파일에서 모듈 가져 오기를 해결하는 방법 ..

https://github.com/react-materialize/react-materialize/blob/master/src/index.js


2
패키지에 대한 유형 / 유형을 설치해야합니다 (npm install @ types / react-materialize). 그러나 아직 존재하지 않는 것 같으므로 직접 만들어야 할 수도 있습니다. 이 기사가 도움이되었습니다 -templecoding.com/blog/2016/03/31/…
T Mitchell

@T Mitchell 그렇다면 우리가 놓치고있는 어떤 종류의 유형도 이러한 유형을 생성하지 않고서는 웹팩을 컴파일 할 수 없다는 의미입니까? 방법이 있어야합니까?
Joy


이것은 나에게 약간의 해결 방법처럼 보입니다.
SuperUberDuper 2017

답변:


81

비슷한 오류가 있었지만 나에게는 react-router. 유형을 설치하여 해결했습니다.

npm install --save @types/react-router

오류:

(6,30): error TS7016: Could not find a declaration file for module 'react-router'. '\node_modules\react-router\index.js' implicitly has an 'any' type.

사이트 전체에서 비활성화하려면 대신 편집 tsconfig.json하고로 설정할 noImplicitAnyfalse있습니다.


1
현재 @ types / react-navigation-tabs 패키지는 아직 없지만 언급 된 패키지 "noImplicitAny": false,는 비활성화했습니다 (react-native init MyProject --template typescript 사용 때문에이 문제가 발생했습니다. 적어도 그렇게 생각합니다) 👍
Top -Master

1
또는yarn add @types/react-router --dev
Omar Tariq

65

내가 이것을 어떻게 극복했는지 알고 싶어하는 사람들을 위해. 나는 일종의 해킹을했다.

내 프로젝트 @types에서 필요한 모든 유형을 찾기 위해 폴더를 만들고 tsconfig.json에 추가했습니다. 그래서 다소 이렇게 보입니다.

  "typeRoots": [
            "../node_modules/@types",
            "../@types"
        ]

그리고 그 안에 alltypes.d.ts. 그것에서 알 수없는 유형을 찾으려면. 그래서 저에게는 이것이 알려지지 않은 유형이었고 거기에 추가했습니다.

declare module 'react-materialize';
declare module 'react-router';
declare module 'flux';

이제 typescript는 더 이상 찾을 수없는 유형에 대해 불평하지 않았습니다. :) 지금 승리 상황 :)


3
별도의 파일에 있다는 부분을 놓쳤습니다. 저를 위해 수정 된 declare파일 에 그 진술을 넣는 것 같습니다 index.d.ts. typeRoots를 만질 필요가 없었습니다.
Scotty Wagoner

잘 작동하지만 require 이미지와 같은 다른 항목에 사용할 때 문제가 발생합니다 . 기본적으로 require아무것도 사용할 수 없습니다 .
Dhruvdutt Jadhav 2017-06-02

1
이 솔루션은 더 이상 최신 TS에서 작동하지 않습니다. nvalid module name in augmentation. Module 'some-dumb-lib-with-no-types' resolves to an untyped module at '/path/to/module', which cannot be augmented.
FlavorScape

2
또한 뭔가 언급 할만큼 가치 : 소스의 위치에 따라가, 당신은 또한 배열 "포함"당신에 "../types"를 추가해야 할 수도 있습니다
netpoetica을

1
react-countdown-clock, 생성 된 @types폴더에 문제가 있으며 위의 모든 단계를 수행했습니다. 여전히 같은 오류가 발생합니다.
Jyothu

48

react-redux 유형과 동일한 문제가 있습니다. 가장 간단한 해결책은 tsconfig.json에 추가하는 것입니다.

"noImplicitAny": false

예:

{
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "isolatedModules": true,
    "jsx": "react",
    "lib": ["es6"],
    "moduleResolution": "node",
    "noEmit": true,
    "strict": true,
    "target": "esnext",
    "noImplicitAny": false,
  },
  "exclude": ["node_modules", "babel.config.js", "metro.config.js", "jest.config.js"]
}

이에 큰 일 IntelliJIDE,하지만 사용자 정의 typeRoots(허용 대답입니다) 방법으로도 일했다 VS CodeIDE
최고 마스터

6
나는 이것이 문제라고 생각하지만 이것이 문제를 해결했지만이 문제에 대한 유효하고 영구적 인 해결책이 있습니까?
Pardeep Jain

나는 이것이이 문제에 대한 최선의 해결책이라고 생각, 나는 내가에게 ERR을 던져 모든 패키지 NPM에 가능한 생각하지 않습니다
길버트 R.

34

@types/<package>사용중인 모듈 이없는 경우 // @ts-ignore위에 설명 을 추가하여 문제를 쉽게 피할 수 있습니다.

// @ts-ignore
import { Navbar, NavItem } from 'react-materialize';

또는 누락 된 항목을 만들 수 있습니다. @types/<package> 다음을 .

선언 파일 게시

어떻게 기여할 수 있는지 확실하게 입력


1
이 패키지에는 @types아직 BTW 가 없습니다 . 저장소에 문제를 생성했습니다 ... github.com/geelen/react-snapshot/issues/131
doublejosh

21

제 경우에는 반응에 문제가있어서 다음을 시작했습니다.

npm install @types/react

그런 다음

npm install @types/react-dom

이것은 나를 위해 일했습니다.


1
이미 설치되어 있어도 이러한 명령을 다시 실행하면 문제가 해결되었습니다.
heringer

기본적으로 명령을 다시 실행할 때 기존 패키지를 업데이트합니다. 그것이 문제가 해결 된 이유입니다.
Anant Lalchandani 2010 년

7

아래 스크립트를 실행하기 만하면됩니다. 그런 다음 사용하려는 모듈을 제거 / 재설치하십시오.

npm install --save @types/react-redux

1
/ A @ 유형이있을 나타나지 않습니다 가능한 반응-실현
RonLugge

6

react-router-domtypescript를 사용하여 새 CRA 앱에 추가 할 때이 문제가 발생했습니다 . 을 추가 한 후 @types/react-router문제가 해결되었습니다.


이것을 설치 한 후 무엇을해야합니까?
Pardeep Jain

6

나는 이와 동일한 문제가 있었지만 반드시 타이프 스크립트와 관련이있는 것은 아니기 때문에 이러한 다른 옵션으로 약간 고생했습니다. react-portal-tooltip,비슷한 오류가 발생 하는 특정 모듈 을 사용하여 매우 기본적인 create-react-app을 만들고 있습니다 .

'react-portal-tooltip'모듈에 대한 선언 파일을 찾을 수 없습니다. '/node_modules/react-portal-tooltip/lib/index.js'에는 암시 적으로 '모든'유형이 있습니다. npm install @types/react-portal-tooltip존재하는지 시도 하거나 declare module 'react-portal-tooltip';ts (7016)를 포함하는 새 선언 (.d.ts) 파일을 추가하십시오.

다양한 .d.ts파일 추가 , 다양한 npm 설치 등 여러 단계를 먼저 시도했습니다 .

그러나 결국 나를 위해 일한 것은 touch src/declare_modules.d.ts 다음과 src/declare_modules.d.ts같습니다.

declare module "react-portal-tooltip";

그리고 src/App.js:

import ToolTip from 'react-portal-tooltip';
// import './declare_modules.d.ts'

이 일반적인 'declare module'전략을 사용하기 위해 다른 위치에서 약간 고생했기 때문에 (저는 매우 초보자입니다) 다른 옵션으로 작동한다고 생각하지만 작동하는 경로가 포함되어 있습니다.

나는 처음에 import './declare_modules.d.ts' 필요 . 지금은 그렇지 않은 것 같지만! 그러나 누군가에게 도움이 될 경우를 대비하여 단계를 포함하고 있습니다.

이것은 내 첫 번째 stackoverflow 답변이므로 여기에 흩어져있는 프로세스에 대해 사과하고 여전히 도움이 되었기를 바랍니다! :)


2
이것은 정말 깔끔하고 간단합니다. 감사합니다. 좋은 일을 계속하십시오!
Cubelaster

4

또한,이 오류는 사용하려는 패키지가 자신의 유형 파일 (들)을의 경우 고정됩니다 그리고 그것은 그것을 열거 된 package.json의 typings 속성

이렇게 :

{
  "name": "some-package",
  "version": "X.Y.Z",
  "description": "Yada yada yada",
  "main": "./index.js",

  "typings": "./index.d.ts",

  "repository": "https://github.com/yadayada.git",
  "author": "John Doe",
  "license": "MIT",
  "private": true
}

3

더 해키 한 방법은 예를 들어 boot.tsx에 줄을 추가하는 것입니다.

import './path/declare_modules.d.ts';

declare module 'react-materialize';
declare module 'react-router';
declare module 'flux';

declare_modules.d.ts

작동하지만 다른 솔루션이 더 나은 IMO입니다.


3

내가 한 일은 프로젝트 폴더 디렉토리에서 nodejs 명령 프롬프트에서 다음 명령을 실행하는 것입니다.

  1. npm init
  2. npm install -g webpack
  3. npm install --save react react-dom @types/react @types/react-dom
  4. npm install --save-dev typescript awesome-typescript-loader source-map-loader
  5. npm install ajv@^6.0.0
  6. npm i react-html-id
  7. 코드를 추가하여 App.js 파일의 패키지 (노드 모듈)를 가져옵니다. import UniqueId from 'react-html-id';

나는 이미 npm을 설치했지만 위의 작업을 수행했으며 작동했습니다!


2

모듈 'react / jsx-runtime'에 대한 선언 파일을 찾을 수 없습니다.

누군가가이 오류를 가지는 경우에, 당신은 만들 때 함께 응용 프로그램을 반응 것을 알고 놀랄 것이다 create-react-app, 그것은 단지 쇼 @types/react에서 package.json. 당신이 내부 확인하지만 node_modules/@types폴더, 당신은 찾을 수 있습니다 어떤 폴더를react .

해결책은 node_modules폴더를 완전히 지우고 다시 설치하는 npm install것입니다. 또는 개별 모듈 설치를 진행할 수도 있습니다 npm install @types/react.


1
당신은 그것을 올바르게 설명했습니다 :)
Awais Usmani

2

2021 년에 .d.ts파일을 수동으로 생성 하려면 다음을 수행하면됩니다.

1- 입력 src folder

2- global.d.ts파일 만들기

다음과 같이 3- 선언 모듈 :

declare module 'module-name';

나는 전에 여기에서 그것을 answred 그것은 좋았다


0

내 경우 문제는 유형이 devDependencies 아래의 package.json 파일에 추가되지 않아서 수정하지 못했습니다npm install --save-dev @types/react-redux .--save-dev


0

tsconfig.json 파일에 추가하려고 : "noImplicitAny": false 나를 위해 일한


1
이렇게하면 기본적으로 TypeScript에서 제공하는 모든 장점을 비활성화 할 수 있습니다. 왜 일반 JS를 사용하지 않습니까?
Matt Ruwe

0

반응 앱에서 src 폴더에 react-app-env.d.ts 파일이있을 것입니다.

/// <reference types="react-scripts" />
declare module 'react-color/lib/components/alpha/AlphaPointer'


-2

잘 작동합니다

npm install @types/react-materialize

3
대한의 어떤 종류의-구체화 반응이 없습니다
katzmopolitan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.