기술/TypeScript

[에러] typescript import 오류 : Could not find a declaration file for module 모듈에 대한 선언 파일을 찾을 수 없습니다.

빔네모 2024. 3. 18. 11:25

Could not find a declaration file for module 'module-name'.

Could not find a declaration file for module (모듈에 대한 선언 파일을 찾을 수 없습니다) 문제 발생

구글 스프레드시트를 연동하는 라이브러리 사용중 다음과 같은 에러가 발생했다.

터미널에 출력된 오류
import 하는쪽에 뜨는 오류

 

자바스크립트만 지원하는 npm 모듈을 TypeScript에서 사용할 때 발생하는 오류이다.

npm 모듈 개발자가 TypeScript 타입을 지정하지 않고 자바스크립트만 지원하는 npm 모듈을 만든 경우 TypeScript에서 사용할 때 오류가 발생한다.

 

해당 라이브러리가 타입 정의를 지원할 경우 오류코드에 나와있는 것처럼 @types/google-spreadsheet 를 설치해도 해결되지만, 찾아보니 구글시트 라이브러리는 타입을 따로 지원해주지 않는 것 같다.

 

그렇다면 다음과 같은 방법으로 해결해보자.

해결방법

// src/types/index.d.ts 
declare module 'module-name'

타입을 정의하는 폴더에 d.ts 파일을 만든 후 다음과 같이 선언해준다.

//import { GoogleSpreadsheet } from 'google-spreadsheet'
//from 뒤에 적힌 라이브러리명을 그대로 가져와서 적어주면 된다.

declare module 'google-spreadsheet'

 

만약 저렇게 적용했는데도 오류가 발생한다면 tsconfig.json에 추가로 설정해준다.

(tsconfig.node.json에도 오류가 나서 아래와 동일하게 추가해줬더니 해결되었다.)

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

타입루트는 본인이 만든 폴더명으로 작성해주면 된다.