typescript, Nestjs로 사이드프로젝트를 하는데 패키지매니저를 처음 써보는 pnpm으로 설정해 프로젝트를 세팅했다.
프로젝트를 생성한 뒤에 간단한 api를 만드려고 아래와 같이 OmitType을 썼더니만 제목의 에러를 만났다.
import { OmitType } from '@nestjs/swagger';
export class UpdateUserDto extends OmitType(UserEntity, ['uid', 'userIdx']) {}
The inferred type of “X” cannot be named without a reference to “Y”. This is likely not portable. A type annotation is necessary.
이미 알려진 타입스크립트의 문제같은데 잘 해결이 안 되고 있나보다. 아래와 같은 설정을 추가하고 vscode를 껐다켰더니 에러가 사라진 걸 볼 수 있었다.
tsconfig.json
"compilerOptions": {
"preserveSymlinks": true
}
참고: https://lightrun.com/solutions/microsoft-typescript-the-inferred-type-of-x-cannot-be-named-without-a-reference-to-y-this-is-likely-not-portable-a/
https://github.com/microsoft/TypeScript/issues/47663
(24.02.18 추가)
이 설정 때문에 pnpm을 이용하는데 더 큰 문제가 생겼다
pnpm은 node_modules에 여러 곳에서 반복해서 참조되는 의존성 패키지들을 중복해서 여러 개 설치하게 되는 문제를 해결하기 위해 심볼릭 링크를 이용하는데, 이 옵션을 켜면 심볼릭링크가 참조하는 링크로 가지 않고 심볼릭링크파일의 위치를 기준으로 확인해서 그동안 prisma generate에서도 문제(https://velog.io/@danceintherain/nestjs-pnpm-prisma-client-error-%ED%95%B4%EA%B2%B0) 가 생기고 심볼릭링크를 이용하는 Pnpm으로 설치한 종속성 패키지들의 실제 설치된 파일들을 제대로 참조해서 찾아가지 못했던 것. (express-serve-static-core, jsonwebtoken 등)
혹시 2/18 이후로 해당 문제 어떻게 해결하셨을까요..?
rtk 사용 중 해당 오류로 난항을 겪는 중이라서요 ㅠㅠ
우선 저는 "declaration": false, 이설정했는데, 다른 방법 찾으셨는지 궁금해요!