저는 npm에서 yarn berry로 갈아타던 중 예상치 못한 에러가 몇 가지 발생해 고생한 경험이 있습니다. 이런 에러들과 제가 에러를 해결한 방법에 대해 공유드리려합니다.
1. ERR_INVALID_ARG_TYPE
node:buffer:587
throw new ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: The "list[2]" argument must be an instance of Buffer or Uint8Array. Received type string ('app.controller.d.ts')
at Function.concat (node:buffer:587:13)
at node:internal/fs/rimraf:144:32
at Array.forEach (<anonymous>)
at node:internal/fs/rimraf:143:5
at /Users/shin/TodaysProject/yarn-project/.pnp.cjs:12971:13 {
code: 'ERR_INVALID_ARG_TYPE'
}
Node.js v20.17.0
위 에러는 제가 node 버전 20.17.0 환경에서 NestJS 애플리케이션을 실행했을 때 생긴 에러입니다. 여러 검색 결과 node 버전이 yarn berry와 충돌해 발생한 에러일 수 있다며 node 버전을 낮출 것을 권장했습니다. 그래서 node를 18.20.4 버전으로 낮췄습니다. 저의 경우 nvm을 사용 중이었기 때문에 다음과 같은 명령어를 사용했습니다.
nvm install lts/hydrogen # 18.20.4 버전을 의미합니다.
nvm use lts/hydrogen
결과적으로 위 에러는 사라졌지만, 또 다른 에러가 발생했습니다. 해당 에러는 아래와 같습니다.
2. Cannot find module
src/app.controller.ts:1:33 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.
1 import { Controller, Get } from '@nestjs/common';
~~~~~~~~~~~~~~~~
src/app.module.ts:1:24 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.
1 import { Module } from '@nestjs/common';
~~~~~~~~~~~~~~~~
src/app.service.ts:1:28 - error TS2307: Cannot find module '@nestjs/common' or its corresponding type declarations.
1 import { Injectable } from '@nestjs/common';
~~~~~~~~~~~~~~~~
src/main.ts:1:29 - error TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.
1 import { NestFactory } from '@nestjs/core';
~~~~~~~~~~~~~~
Found 4 error(s).
위와 같이 NestJS 기본 명령어를 통해 생성한 새로운 NestJS 애플리케이션의 import 문에서 에러가 발생했습니다. 검색 결과 이 또한 버전 관련 이슈로 타입스크립트의 버전을 낮추는 것을 권장한다고 했습니다. 그래서 타입스크립트 버전을 5.x.x 에서 4.x.x 버전으로 낮췄습니다. package.json 파일 속 devDependencies 속 typescript 버전을 수정했습니다.
결과적으로 위 에러가 해결되며 정상적으로 NestJS 애플리케이션이 실행되었습니다. 하지만 여기서도 에러는 계속됩니다..😂 실제 애플리케이션 자체는 정상적으로 실행되지만, vscode 코드 편집기 상에서 @nestjs/common 같은 모듈을 import 하는 코드가 빨간색으로 표시되며 다음과 같은 에러를 표시했습니다. 해당 에러는 다음과 같습니다.
3. @nestjs/core' 모듈 또는 해당 형식 선언을 찾을 수 없습니다.
import { NestFactory } from '@nestjs/core';
이런 모듈 import 과정에 빨간줄로 에러가 표시되는 것인데요. 실제 애플리케이션 실행에는 문제가 없어 무시할까 했지만 이런 에러 표시가 추후에 발생할 다른 에러 표시와 혼동을 줄 가능성이 있다고 생각해 해결하기로 결정했습니다.
yarn dlx @yarnpkg/sdks vscode
먼저 위 명령어를 통해 vscode 설정을 Yarn의 플러그인 방식으로 구성합니다. 이를 통해 프로젝트마다 typescript나 eslint, prettier 버전을 다르게 가져갈 수 있습니다.
설치가 완료되면 vscode에서 main.ts 같은 타입스크립트 파일을 열고 여기서 F1 키를 눌러줍니다. 그리고 Typescript: Select Typescript version ... 을 클릭해줍니다. 그 다음 방금 설치한 sdks 폴더 하위에 있는 타입스크립트를 클릭해주면 위 에러도 해결됩니다.
'에러' 카테고리의 다른 글
[AWS] RDS 외부 접속 안될 때 해결 방법(connection timed out) (0) | 2025.04.03 |
---|---|
리액트 빌드 후 CSS 적용 안될 때 시도할만한 방법들 (0) | 2025.03.20 |
강제 종료해도 다시 실행되는 mysql 문제 해결하기(맥북) (0) | 2024.11.01 |