src/modules/api.rest/user.controller.ts:12:30 - error TS2306: File '대충 파일 주소' is not a module.
주어진 오류 메시지는 TypeScript 컴파일러가 C:/Users/LG/Livey_api/src/modules/api.rest/email.service.ts 파일을 모듈로 인식하지 못한다는 것을 나타냅니다. 이는 해당 파일이 모듈로 내보내기(exports)가 제대로 설정되지 않았거나, 잘못된 형식으로 import되었을 가능성이 있습니다.
해당 오류를 해결하기 위해 다음과 같은 단계를 따라갈 수 있습니다:
- email.service.ts 파일 확인: 먼저 C:/Users/LG/Livey_api/src/modules/api.rest/email.service.ts 파일의 내용을 확인합니다. 해당 파일이 모듈로 정의되어 있는지 확인하고, 올바른 형식으로 작성되었는지 다시 한번 검토합니다.
- 모듈 내보내기 설정: email.service.ts 파일에서 해당 서비스 클래스(EmailService)를 export하는 부분이 있는지 확인합니다. 예를 들어, 아래와 같은 코드가 있어야 합니다:
-
typescript
export class EmailService { // ... }
- import 구문 확인: UserController 클래스에서 EmailService를 import하는 부분을 검토합니다. 아마도 다음과 같은 코드일 것입니다:이때 경로('./email.service')가 올바른지 다시 한번 확인하세요.
-
typescript
import { EmailService } from './email.service';
- tsconfig.json 설정: 프로젝트의 tsconfig.json 파일에 "moduleResolution" 옵션이 올바르게 설정되어 있는지 확인합니다. 일반적으로 "moduleResolution" 값은 "node"나 "classic" 중 하나여야 합니다.
위 단계들을 따라가면서 오류 원인을 찾아 수정할 수 있습니다. TypeScript 컴파일러에서 발생한 이 오류는 주로 모듈 정의와 import/export 관련 문제에 의해 발생하므로, 해당 부분들에 집중하여 검토하면 도움이 될 것입니다.
라고 하길래...
{
"compilerOptions": {
// 다른 설정들...
"moduleResolution": "node"
}
}
"moduleResolution" 옵션은 모듈 해석 방식을 지정하는 옵션입니다.
TypeScript는 두 가지 주요한 모듈 해석 방식을 제공합니다:
"node": 이 옵션은 Node.js 환경에서 모듈을 해석하는 방식으로,
Node.js의 내장 모듈 해석 알고리즘을 사용합니다. 일반적으로 Node.js 기반 프로젝트에서 사용됩니다.
"classic": 이 옵션은 예전 버전의 JavaScript 모듈 시스템과 호환되는 모듈 해석 방식입니다.
이는 브라우저 환경이나 구형 JavaScript 프로젝트에서 사용될 수 있습니다.
일단 이거 먼저 추가해주고...
Error: Nest can't resolve dependencies of the UserController (Symbol(UserUseCase), ?). Please make sure that the argument EmailService at index [1] is available in the ApiRestModule context.
킹받는 새로운 오류 하나가 또 뜨길래...
Potential solutions:
- Is ApiRestModule a valid NestJS module?
- If EmailService is a provider, is it part of the current ApiRestModule?
- If EmailService is exported from a separate @Module, is that module imported within ApiRestModule?
NestJS의 의존성 주입(Dependency Injection) 시스템에서 UserController 클래스에 필요한 의존성을 해결할 수 없다는 것을 나타냅니다. 구체적으로는 EmailService가 ApiRestModule 컨텍스트에서 사용 가능하지 않은 상태입니다.
이러한 오류를 해결하기 위해 다음과 같은 점검 사항들을 확인해 보세요:
- ApiRestModule이 올바른 NestJS 모듈인지 확인하세요: ApiRestModule 클래스가 정상적인 NestJS 모듈로 작성되어 있는지 확인합니다. @Module() 데코레이터를 사용하여 올바르게 설정되었고, 필요한 프로바이더(Provider)와 의존성 등록이 이루어져 있는지 다시 한번 검토합니다.
- EmailService가 현재의 ApiRestModule에 포함되어 있는지 확인하세요: EmailService가 현재의 ApiRestModule에서 제공자(Provider)로 등록되어 있는지 확인합니다. 즉, providers 배열 또는 exports 배열 내에 해당 서비스(EmailService)가 포함되어 있어야 합니다.
- 별도의 @Module에서 EmailService를 내보내고 현재의 ApiRestModule에서 가져오고 있는지 확인하세요: 만약 EmailService가 별도의 모듈(EmailModule)에서 정의되고 내보내진 경우, 해당 모듈(EmailModule)이 현재의 ApiRestModule 내부에서 임포트(import)되었는지 다시 한번 확인합니다.
이때는 몰랐다... API만들면서 가장 빡치는 순간이 다가오고 있다는 것을..
'백엔드 > 프로젝트 삽질기&회고' 카테고리의 다른 글
[NestJS] 이메일 유효성 검사 API 명세서 작성&테스트 삽질기&회고(5) (1) | 2023.10.26 |
---|---|
[NestJS] 이메일 유효성 검사 API 명세서 작성&테스트 삽질기&회고(4) (1) | 2023.10.26 |
[NestJS] 이메일 유효성 검사 API 명세서 작성&테스트 삽질기&회고(2) (0) | 2023.10.23 |
[NestJS] 이메일 유효성 검사 API 명세서 작성&테스트 삽질기&회고(1) (0) | 2023.10.22 |
[NestJS] 이메일 유효성 검사 API 구성 삽질기&회고(5) (0) | 2023.10.22 |