[에러] babel-node'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

sarifor·2022년 2월 28일
0

문제

Node.js + Express 앱에서 npm run start ("start": "nodemon --exec babel-node src/index.js")를 실행하면, 아래와 같은 메시지 나오고 실행이 안 됨.

babel-node'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

일본어, 영어의 경우

'babel-node' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

"babel-node is not recognized as an internal or external command, operable program or batch file".

과거 코드, 2022/2/11 현재의 최신 코드 상관없이 동일 현상 발생.

환경

Node.js 16.14.0
NPM 8.3.1

원인

npm 패키지 로컬 인스톨을 하면 동명의 링크가 node_modules/.bin/에 들어가고, package.json의 scripts에 쓰는 커맨드는 이걸 읽어오게 되어 있다.
그러나 무슨 이유에선가 읽어오지 못함.

해결

babel-node 대신 절대경로 써 줬더니 해결. (커밋 1c1fc0f)

"start": "nodemon --exec ./node_modules/.bin/babel-node src/index.js"

혹은 babel-node를 global로 깔고, 제어판의 환경변수에 추가하면 경로가 인식된다 함 (미확인).

궁금한 점

.bin이란?

컴퓨터가 다루는 실행파일이 담기는 곳. 컴은 0과 1의 조합으로 모든 정보를 처리한다. 일반적으로 모듈을 설치하면 바이너리로 컴파일되어 .bin에 복사되고, 우리가 모듈을 쓸 때는 이를 실행시킨다.

요약

babel-node 커맨드를 실행할 수 없어, 절대경로를 씀으로 해결.
이는 .bin 폴더 안에 담긴 실행파일에 직접 접근하는 것이다.

참고

[Nodejs] node_modules의 .bin폴더의 정체
npm install 시 module 이 설치되는 경로
npm package.json 取扱説明書
[컴퓨터 용어] binary file 바이너리 파일
Nodejs 개발환경 구성(nodemon, babel-node)
npm modules 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다
윈도우10 "내부 또는 외부 명령, 실행할 수 있는 프로그램이 아닙니다." 해결 방법

profile
잠수 탄 블로그 같지만 살아있어요

0개의 댓글