/ PROGRAMMING

[typescript] npm 모듈 import시 오류를 해결하는 방법(d.ts 파일 생성법)

typescript npm 모듈 import시 오류의 원인과 해결하는 방법을 알아봅니다.

Typescript에서 js npm 모듈 import시 오류를 해결하는 방법

typescript로 프로젝트를 할 때 npm에서 필요한 모듈들을 설치하고 import해서 사용하려고 할때 모듈 'module name'에 대한 선언 파일을 찾을 수 없습니다. 라는 메시지와 함께 모듈을 import할 수가 없습니다.

원인은 기존 js 파일에서만 import 하여 사용가능한 형태만 지원하고 npm모듈을 만든 개발자가 typescript사용할 수 있도록 처리를 하지 않았기 때문입니다.

구글링 키워드가 잘 못 되었는지 정확한 문제 해결에 대한 답변을 찾을 수가 없었고 stack overflow의 답변들을 적용해보았으나 명확히 해결되지 않았습니다. 삽질 시간이 꽤 소모되어서 다른분들은 부디 삽질 하지 마시길 바라며 본 포스팅을 남깁니다.

해결방법

d.ts 파일 생성

// @types/모듈명/index.d.ts 
declare module '모듈명'
  • 모듈명 - import 모듈 from ‘모듈명’에서 사용하던 모듈명과 동일합니다.

d.ts 파일 생성 위치

app /src
    /node_modules
    /assets
    /@types <= 폴더를 생성
           /모듈명 <= 모듈명과 같은 폴더명을 생성
                /index.d.ts <= index.d.ts파일 생성

생성위치 - app/@types/모듈명/index.d.ts

import

import 모듈 from '모듈명';

import 하는 곳에서는 다른 부분없이 그대로 평소 처럼 import하여 사용한다.

tsconfig.json 설정

설정을 추가해야한다고 하지만 본인의 경우에는 추가하지 않아도 동작하였습니다. 혹시 동작하지 않으신 분들은 추가 하세요

{
  "compilerOptions": {
    "typeRoots" : ["./@types", "./node_modules/@types"]
  },
}

새로 생성한 @types폴터를 추가해 줍니다.

마무리

typescript사용시 npm 모듈이 import되지 않는 문제 해결방법을 알아 보았습니다.

kimchanjung

김찬정

좀 더 넓은 TEST 커버리지! 좀 더 나은 Architecture! 좀 더 나은 Code Pattern! 보다 더 간결하고 깔끔한 코드!를 항상 갈망 합니다.

Read More