개발 블로그

발행: 2022/08/31수정: 2022/08/31

NestJS 프로젝트 시작할 때 절대 경로가 인식되지 않는 문제

NestJS 프로젝트 시작할 때 절대 경로가 인식되지 않는 문제

발단

개발중이던 NestJS가 모든 패키지를 최신버전으로 업데이트 하니까 아래 에러가 발생하고 프로젝트 실행이 안됐다.

Error: Cannot find module 'src/common/entities/core.entity'
Require stack:
- /Users/a/backend/dist/clinics/entities/clinic.entity.js
- /Users/a/backend/dist/patients/entities/patient.entity.js
- /Users/a/backend/dist/users/entities/user.entity.js
- /Users/a/backend/dist/users/users.module.js
- /Users/a/backend/dist/app.module.js
- /Users/a/backend/dist/main.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:955:15)
    at Function.Module._load (node:internal/modules/cjs/loader:803:27)
    at Module.require (node:internal/modules/cjs/loader:1021:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (/Users/iseongjin/gh/muool-backend/src/clinics/entities/clinic.entity.ts:8:1)
    at Module._compile (node:internal/modules/cjs/loader:1119:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1173:10)
    at Module.load (node:internal/modules/cjs/loader:997:32)
    at Function.Module._load (node:internal/modules/cjs/loader:838:12)
    at Module.require (node:internal/modules/cjs/loader:1021:19)

해결

패키지를 하나하나 확인하니 ts-node, @types/node, tsconfig-paths 등을 설치하면 문제가 발생하는데 그 패키지를 지우거나 버전을 되돌려도 문제가 계속 발생한다. 오직 package.json을 되돌리고 node_modules 폴더를 지워야 다시 작동한다.

src부분을 ../~ 이런 상대경로로 바꾸면 에러 메시지가 바뀌는데 수정하기 전에 다른 문제가 있나 싶어 검색을 계속했다.

경로 문제가 키워드인 거 같아 "nestjs absolute path error"를 검색, 깃헙이슈를 발견했다.

NestJS는 프로젝트를 시작(npm run start)하면 dist 폴더에 빌드하고 그 파일을 실행하는데 빌드 된 폴더에 src가 없어서 src/~로 시작하는 경로를 읽지 못하는 문제다.

이슈에 보면 복잡한 해결방법이 있었지만 상대경로를 사용하는 게 간단하고 문제가 없는 거 같아 상대경로로 바꿨고 vscode도 상대경로로 자동 삽입 되도록 변경했다.

change log

vscode auto import시 상대경로 설정하기

vscode import module specifier option

vscode -> 설정 -> Import Module Specifier -> relative로 변경(기본값 shortest)