[Nest.js] Intellij 내 Prisma 자동 완성 안 될 때 반쪽짜리 해결법

정지현·2022년 11월 13일
0
post-thumbnail

Prisma 를 적용하고 있는데, 스키마 파일이라던가 아니면 Prisma Client 에서 Generete 된 스키마 객체에 대하여 자동완성이 안 되고 있었다. 직접 타이핑해서 임포트를 해줘야한다던가.. 그러더라.. 이상하다 싶어서 Prisma Client 내부 클래스를 살펴봤더니, 여기 안에는 클래스들이 정상적으로 export 되고 있었다.

참고로, 본인이 사용하는 IDE 는 Intellij 이고, Plugin 으로 Prisma 를 설치한 상태이다. (Prisma Support 플러그인도 있긴 한데, 설치하니까 오류(?) 가 나오더라. Prisma 플러그인을 제거하고 Support 만 따로 설치해봐야겠다.)

Import 자동 완성 문제

문제 상황: 파일 내 임포트 자동 완성 안 됨.

상기 그림과 같이 @prisma/client 패키지에서 임포트하려는 객체에 대한 자동 완성이 지원이 안 된다.

해결 (node_modules 내 exclude 해제)

  • node_modules -> .prisma 마우스 우클릭 -> Mark Directory as -> Cancel Exclusion

이와 같이 Cancel Exclusion 을 해주면 해결된다. .prisma 디렉토리는 @prisma/client 에서 스키마에 대한 정의를 나타내는 Distribution 인데, 왜인지는 모르겠지만 기본적으로 Exclude 가 되어있는 것 같다. 이를 풀어주면 된다.

아아 영롱하다.

schema.prisma 파일 내 자동 완성 문제

해당 방법을 해결하는 법은 아직 찾지 못 했다.. Jetbrains Marketplace 에서 관련 플러그인 두 개(Prisma, Prisma Support)를 검색해봤는데, 리뷰가 그렇게 좋지 못 하다. 두 플러그인 개발자들이 더 이상 업데이트를 안 해주고 있는 것 같은데, 좀 더 알아봐야겠다.

일단은 기존 Prisma 플러그인의 리뷰를 살펴보니, "동작하지 않는다 (Not working)" 또는 "코드 하이라이팅만 지원하고 나머지는 아무 것도 동작하지 않는다." 와 같은 반응이 대부분이었고, 어떤 댓글은 "다른 좋은 플러그인은 없어보인다. 이거 만드신 분은 살아있는거 맞나요? _(ツ)_/¯" 와 같이 안위를 걱정해주기도 하더라..

다른 방법이 없나.. 어떻게 해결하지 ㅜ 공식 도큐먼트에 의존하면서 메모장 코딩처럼 스키마를 짜야하는 것인가..! VSCode 는 Extension 이 살아있는 것 같기도 하고.. 만약 된다면 Prisma 때문에 VSCode 로 가야하나... 싶다.

결론

2022년 11월 13일 기준으로 Prisma 관련 플러그인이 제대로 동작하기전까지 VSCode 를 사용하기로 했다. Prisma Extension 설치하니까 내가 원하는대로 동작하더라...

일단 키맵도 Intellij 에 맞게 지정해놓았으니 잠시 동안의 피난처로서 사용해야겠다. 물론 VSCode 가 안 좋다는건 아니다.. 엄청 좋아하는데... 다만 IDE 는 가능하다면, 아예 다른 특화된 언어(예를 들어 파이썬의 파이참이라던지.. 주피터 노트북 같은 REPL 이라던지..)에 맞는 IDE 를 사용하는게 아닌 이상 하나로 통일해서 쓰고 싶었는데, 이 부분이 조금 아쉬울 뿐이다.

2022.11.16.

다시 Intellij 로 돌아왔다. 일단 각 파일 내에서 Prisma Client 내의 자동 완성 문제를 해결하기도 했고, 나름 Prisma 스키마를 다루는 것도 손에 익기는 해서, 가끔 헷갈리는건 공식 도큐먼트만 참고하기로 했다.

무엇보다, 스키마 작성을 위한 자동 완성을 지원하지 않는다는 이유로 다른 IDE 를 쓸 필요가 없는 것 같다는 생각이 들었다. 언젠가는 이 플러그인이 업데이트가 되길 바라며, Intellij 로 코딩을 계속 해야겠다!

profile
나를 성장시키는 좌절에 감사하고 즐기려고 노력 중

1개의 댓글

comment-user-thumbnail
2022년 11월 15일

그대는 정녕 스프링을 버리셨습니까..아아..

답글 달기