npm run 스크립트 에러 해결 (dev·build·start)
npm error Missing script: "dev" / npm error code ELIFECYCLE / npm error ... npm run dev exited with 1
이런 증상일 때
npm run dev / npm run build / npm run start 를 실행했을 때 두 가지 형태로 멈춥니다. (1) `npm error Missing script: "dev"` 처럼 스크립트가 없다는 메시지, (2) 스크립트는 실행됐으나 `npm error code ELIFECYCLE` 와 `exited with 1` 로 도중에 죽는 경우입니다. 후자는 "This is probably not a problem with npm" 문구가 함께 떠서 진짜 원인이 그 위쪽 로그에 있다는 점을 놓치기 쉽습니다. 윈도우에서는 `'NODE_ENV' is not recognized` 같은 셸 차이 에러로도 나타납니다.
원인
- package.json 의 scripts 에 dev/build/start 키 자체가 없음 (Missing script: "...")
- package.json 이 없는 디렉터리(또는 모노레포 하위 폴더)에서 명령을 실행함
- 스크립트는 호출됐지만 그 안의 명령(next build, vite 등)이 실패해 0 이 아닌 종료코드를 반환 → npm 이 ELIFECYCLE 로 래핑
- 윈도우 CMD/PowerShell 은 NODE_ENV=production 같은 유닉스식 인라인 환경변수 문법을 인식하지 못함 → 'NODE_ENV' is not recognized
- node_modules 손상·미설치로 스크립트가 부르는 바이너리(next, vite 등)를 못 찾아 ENOENT / could not determine executable
해결 방법
먼저 어느 케이스인지 확인합니다. 'Missing script' 면 정의 문제(해결책 2~3), 'code ELIFECYCLE' 면 스크립트 내부 실패(해결책 4~5)입니다. 현재 프로젝트에 어떤 스크립트가 정의돼 있는지부터 확인하세요.
npm run # 정의된 스크립트 목록 출력
cat package.json # scripts 블록 직접 확인 (Windows: type package.json)`Missing script: "dev"` 는 해당 키가 scripts 에 없다는 뜻입니다. 먼저 package.json 이 있는 루트 디렉터리에서 실행 중인지 확인하고, 없다면 scripts 에 키를 추가합니다. Next.js 기준 표준 스크립트는 아래와 같습니다. (프레임워크에 맞게 next 를 vite 등으로 교체)
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}`npm error enoent ENOENT: no such file or directory, open '.../package.json'` 이 뜨면 프로젝트 루트가 아니거나 초기화가 안 된 상태입니다. 루트로 이동하거나 새 프로젝트면 초기화 후 의존성을 설치합니다.
npm init -y
npm install`code ELIFECYCLE` 와 'This is probably not a problem with npm' 는 npm 이 아니라 스크립트가 부른 명령이 실패했다는 신호입니다. 진짜 원인은 그 위 로그에 있습니다. 대개 모듈 누락·문법 에러이므로 캐시·lock·node_modules 를 초기화해 재설치하면 상당수 해결됩니다.
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
# (peer 충돌 시) npm install --legacy-peer-deps빌드가 ELIFECYCLE 와 함께 'JavaScript heap out of memory' 로 죽으면 Node 메모리 한도를 올립니다. Vercel·Netlify 등 국내외 호스팅 빌드에서도 동일하게 적용됩니다.
# macOS/Linux
NODE_OPTIONS=--max-old-space-size=4096 npm run build
# Windows (PowerShell)
$env:NODE_OPTIONS="--max-old-space-size=4096"; npm run build맥/리눅스에서 잘 되던 `"dev": "NODE_ENV=development next dev"` 가 윈도우에선 `'NODE_ENV' is not recognized` 로 죽습니다. 저는 12개 사이트를 윈도우·맥 양쪽에서 굴려서 cross-env 를 표준으로 씁니다. 설치 후 스크립트 앞에 cross-env 만 붙이면 OS 무관하게 동작합니다. (참고: 한글 사용자명 경로 C:\Users\사용자\ 에서도 cross-env 자체는 정상이며, 이때 깨지는 건 보통 별도의 ENOENT — node_modules 재설치로 처리)
npm install --save-dev cross-env
# package.json
"dev": "cross-env NODE_ENV=development next dev"