Error기록 노트/Node

node.js error) TypeError [ERR_INVALID_ARG_TYPE]: The "..." argument must be of type number. Received type string ('SIGINT')...code: 'ERR_INVALID_ARG_TYPE'

에러노트 2023. 6. 14. 19:13

안녕하세요. 에러노트입니다. 오늘은 최근 버전으로 업데이트 후에 생긴 문제로 가장 최근 버전인 node.js 20버전에 관한 에러를 발견하여 글을 쓰게 되었습니다. 

(마지막에 최근 버전 업데이트에 관한 지원종료 및 공지에 대한 간략한 설명도 적어두었으니 궁금하신 분들은 참고하세요😉)

저는 해결 방법을 두고 아래 2가지 방법 중

- 에러를 해결하고 20버전으로 사용하기
이전 상태로 다운그레이드 하기

로 결정!!
프로젝트 진행 중인 상황이라 괜히 업그레이드 했다가 다른분들과 꼬일까봐 걱정되어 안전하게 다운그레이드로 진행하였는데, 혹시 버전을 20으로 유지하여 해결해야 하는 분은 아래의 공식 사이트의 error와 깃헙 등을 참고하시기 바랍니다.

 

DeprecationWarning: Implicit coercion to integer for exit code is deprecated · Issue #17127 · prisma/prisma

Bug description i am running nodemon for an express server that uses prisma every time nodemon restarts the server, i get this warning: (node:14591) [DEP0164] DeprecationWarning: Implicit coercion ...

github.com

 

Errors | Node.js v20.3.0 Documentation

 

nodejs.org

 

0.  에러 당시 상태 및 상황

- node.js 버전: v20.2.0
- macOs 버전: 13.1
- brew 사용유무: O
-  npm run dev 실행 종료 후 아래 에러 발생

node:internal/validators:95
      throw new ERR_INVALID_ARG_TYPE(name, 'number', value);
      ^

TypeError [ERR_INVALID_ARG_TYPE]: The "code" argument must be of type number. Received type string ('SIGINT')
    at process.set [as exitCode] (node:internal/bootstrap/node:124:9)
    at process.exit (node:internal/process/per_thread:188:24)
    at process.emit (node:events:511:28) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Node.js v20.2.0

 

1. 해결 방법

저의 경우 brew로 해결하였으며, window를 쓰는 분들께서는 구문이 조금 다를 수 있어(nvm?을 쓸겁니다 아마..) 주의 바랍니다.
(다운로드하여 설치하는 방법이 아니므로 설치를 원하시면 공식 사이트를 참고하세요.)

우선, 아래와 같이 brew에 node가 무슨 버전으로 설치되어 있는지 확인하겠습니다.

brew search node

조회하면 저의 경우 node와 node@16버전 2가지가 있죠.

저는 @16버전으로 설정하기 위해 현재 node를 uninstall 하겠습니다.

brew unlink node

//아래와 같이 심볼릭 링크에 관해 덮어쓰기와 삭제 중 선택하라는 문구가 출력되면 정상동작한 것입니다.

Unlinking /usr/local/Cellar/node/20.2.0... 5 symlinks removed.
kimjeewoo@gimjiuui-MacBookPro cms % brew link node@16

Linking /usr/local/Cellar/node@16/16.20.0... 
Error: Could not symlink bin/npm
Target /usr/local/bin/npm
already exists. You may want to remove it:
  rm '/usr/local/bin/npm'

To force the link and overwrite all conflicting files:
  brew link --overwrite node@16

To list all files that would be deleted:
  brew link --overwrite --dry-run node@16

To force the link...부분을 살펴보면 구문이 2가지 있음을 알 수 있습니다.
하나는 덮어쓰기, 하나는 삭제입니다. 상황에 따라 적절하게 선택하시면 됩니다.


저의 경우, brew link --overwrite node@16로 진행하였고,
아래와 같이 경로에 관한 내용이 나오며 설정이 완료되었습니다.

이후로는 동작 종료 후 문구가 따로 뜨지 않고 정상 종료됨을 확인할 수 있었습니다.
(하지만, 전혀 다른 문제가 생겼으니...제 삽질과 함께 valet 관련 문제가 별도로 있었음을 깨닫고 valet을 수정하고서야 정상적으로 화면이 출력되었습니다. 해당 부분에 관해서는 다음 글에서 더 자세히 작성해볼게요.🤣)


# Node.js 20버전과 관련하여 최신 업로드 내용 정리

❗️Node.js 14버전, 2023년 4월 지원 종료
❗️Node.js 16버전, 2023년 9월 지원 종료

현재 LTS버전인 Node.js 18 또는 10월에 LTS버전으로 전환될 때를 노려 Node.js 20으로 업그레이드 준비하시길 추천드리면서 이번 에러도 마무리하겠습니다.