실수 1: 문서(Docs) 건너뛰기 (스포일러: 정말 최고)
요약
AI 시대에도 개발자는 기초 지식과 도구에 대한 깊은 이해가 필수적입니다. 본 글은 Prisma 8을 사용하며 폴더 구조를 임의로 변경했을 때 발생한 컴파일 및 스키마 검색 오류 사례를 공유합니다. 이는 AI 제안을 맹신하기보다, 시스템의 근본적인 작동 원리를 파악하는 것이 중요함을 강조합니다.
핵심 포인트
- AI는 유능하지만 사용자가 도구를 이해해야 한다.
- Prisma 설정과 NestJS 컴파일 환경 간 상호작용을 알아야 한다.
- 폴더 구조 변경 시 발생할 수 있는 오류를 미리 예측해야 한다.
소프트웨어 개발을 시작하는 초보자로서, 특히 AI 시대에는 학습 단계를 쉽게 건너뛰고 바로 구축 단계로 뛰어들 수 있습니다.
하지만 학부 시절의 경험은 저에게 한 가지를 가르쳐 주었습니다. 불안정한 기초와 작업 중인 도구에 대한 불충분한 이해는 결국 당신을 괴롭힐 것이라는 점입니다. 때로는 가장 예상치 못한 방식으로 말이죠.
개발 환경을 설정하고 데이터베이스 설계를 마무리한 후, 저는 DMS 프로젝트에서 Prisma 8을 초기화했습니다.
여기서 AI에 관한 중요한 사실이 있습니다. 작업 중인 내용에 대한 충분한 컨텍스트를 제공하지 않으면, AI의 제안은 오해의 소지가 있거나 설정에 적합하지 않을 수 있다는 것입니다.
ChatGPT와 저는 브레인스토밍을 거쳐 프로젝트 폴더 구조를 다음과 같이 만들었습니다:
dms-v2/
├── src/
│ ├── auth/
...
prisma/ 디렉토리가 src/ 밖에 있다는 점에 주목하세요? 좋습니다.
하지만 Prisma 8은 처음에 이 디렉토리를 src/ 안에 생성했습니다. 그리고 제가 뭘 했는지 아시나요?
네, 맞게 추측하셨습니다. 저는 그것을 프로젝트 루트로 옮겼습니다. 😭
모든 것이 괜찮다고 생각하고 contract.prisma에 데이터베이스 모델 작성을 계속했습니다.
또한, 생성된 Prisma 클라이언트가 NestJS 모듈 전반에 걸쳐 의존성 주입(dependency injection)을 통해 접근할 수 있도록 다른 src/prisma/ 디렉토리에 전역 Prisma 모듈을 설정했습니다.
이 시점에서 저는 서로 다른 책임을 가진 두 개의 디렉토리를 갖게 되었습니다. 하나는 프로젝트 루트에 있는 Prisma 스키마 및 구성을 위한 것이고, 다른 하나는 생성된 클라이언트와 Prisma 서비스를 위한 src/ 내부의 것입니다.
그러자 문제가 발생하기 시작했습니다.
첫 번째 문제: NestJS 컴파일
TypeScript 파일이 TypeScript 컴파일 설정 범위 밖에 놓여 있어 NestJS 애플리케이션을 시작할 때 컴파일 오류가 발생했습니다.
두 번째 문제: Prisma가 스키마를 찾지 못함
Prisma 역시 구성된 위치에서 스키마를 찾고 있었지만, 저는 관련 디렉토리를 옮겨 놓았습니다. 그 결과, 후속 Prisma 명령어들이 예상하는 곳에서 스키마를 찾을 수 없었습니다.
저는 Prisma의 설정(configuration)과 NestJS의 컴파일 환경(compilation setup)이 어떻게 상호작용하는지 완전히 이해하지 못한 채 폴더 구조를 변경하면서 이러한 문제들을 만들어냈습니다.
배운 점
AI는 유능한 도구이지만, 사용하는 사람만큼만 좋다고 생각합니다. 그래서 저는 제가 다루고 있는 도구들을 이해하고 해당 분야에 탄탄한 기반을 구축하려고 노력합니다. 그래야 AI가 제안하는 해결책들을 맹목적으로 받아들이기보다는 평가할 수 있기 때문입니다.
Prisma 8 문서를 읽어보는 것이 이러한 문제들을 해결하는 데 도움이 되었습니다. 또한, AI가 구형 버전을 기반으로 Prisma ORM 쿼리를 제안했던 경우를 포함하여 후속 문제들을 다루는 데도 도움을 주었습니다.
문서(Documentation)가 항상 가장 흥미로운 것을 읽는 것은 아닐 수 있지만, 때로는 제가 정확히 필요로 하는 것이 바로 그것입니다.
그리고 이것이 이번 경험을 통해 얻은 교훈 중 하나입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기