최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

yarn berry 에러: yarn berry를 찾을 수 없다는 문구가 포함

Internal Error: The "yarn-path" option has been set (in /home/hjj/wsl-poc/test/.yarnrc.yml), but the specified location doesn't exist (/home/hjj/wsl-poc/test/.yarn/releases/yarn-3.2.1.cjs).
    at i (/home/hjj/.node/corepack/yarn/3.2.1/yarn.js:449:11811)
    at async r (/home/hjj/.node/corepack/yarn/3.2.1/yarn.js:449:10914)

 

1. 프로젝트에서 .yarnrc.yml 파일을 제거한다

 

2. yarn2 버전을 다시 구성

$ yarn set version berry

 

3. gitignore 설정

    ( 예외처리 설정에대한 항목 https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored )

 

     .gitignore 설정이 없으면 1,000개 이상의 종속성 파일이 저장소에 같이 커밋되므로

     .gitignore 파일에 아래와 같이 예외처리 해준다.     

.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.pnp.*

4. 업데이트 된 .yarnrc.yml 파일을 커밋에 포함시키도록 한다.

     특히 .yarnrc.yml 에 명시된 .yarn/releases/yarn-berry.js ( 또는  .yarn/releases/yarn-berry.cjs 처럼 이름이 다를 수 있다)

 

*  2022.09.21 내용 추가

도커 이미지 만들고 쿠버네티스에서 pod 안에서 빌드 할 때 모듈 의존성 에러나는 경우가 있다
대략 패키지를 찾을 수 없다는 내용, 아래와 같다.
Cannot find package 'OOO' imported from OOO...
아래 pipe 라인의 맨 마지막 줄에서 빌드할때 실패 하는 케이스.
이런 경우 pnp 모드가 아니라 일반 node modules 로 구동되게 설정할 수 있다.

(빌드의 예) build.sh

$ yarn
$ rm -rm .yarnrc.yml
$ yarn set version berry
$ yarn run build (... <= error)

.yarnrc.yml
nodeLinker: node-modules​

 

5. VSCode 에서 타입스크립트를 사용하기 위한 추가 (선택사항)

 

yarn2 는 node_modules 대신에 .yarn/cache 폴더의 .pnp.js 파일에 의존성을 기록하고 실제 파일은 zip 으로 관리한다.

그렇기 때문에 각 패키지는 동적으로 참조되고 용량도 node_modules 를 사용할 때 보다 많이 줄어들었다.

 

타입스크립트의 타입은 이 zip 캐시에 저장된 PnP방식으로 호출될 것이다.

그러면 zip을 읽어오기 위해서 VSCode 마켓스페이스의 ZipFS 확장 플러그인을 설치해야 한다.

 

또한 VSCode가 기존 node_modules 에서 읽어왔던 개발 도구들을 yarn berry 의 PnP 방식에서 사용할 수 있도록

아래 명령어를 사용해 주어야 한다.

$ yarn dlx @yarnpkg/sdks vscode

 

yarn에서 제공하는 SDK 이며 이는 /.vscode/settings.json 에서 다음의 설정이 추가되어있는것을 확인할 수 있다.

{
  "search.exclude": {
    "**/.yarn": true,
    "**/.pnp.*": true
  },
  "eslint.nodePath": ".yarn/sdks",
  "typescript.tsdk": ".yarn/sdks/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true
}

마지막으로 VSCode 에서 설치한 sdk 로 ts 버전을 지정해주면 된다.

.ts파일을 열고, VSCode 우측 하단에서 { } 버튼을 누른후, .yarn/sdks/typescript/lib 를 선택해준다.

댓글