TechFeedTechFeed
npm빌드

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·build·start 가 실패하는 원인은 "스크립트 미정의(Missing script)" 와 "스크립트 자체 실패(ELIFECYCLE)" 두 갈래로, 에러 위쪽 실제 메시지부터 읽고 케이스별로 처리하면 됩니다.

이런 증상일 때

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

해결 방법

1
1단계 — 케이스 구분: Missing script 인지 ELIFECYCLE 인지

먼저 어느 케이스인지 확인합니다. 'Missing script' 면 정의 문제(해결책 2~3), 'code ELIFECYCLE' 면 스크립트 내부 실패(해결책 4~5)입니다. 현재 프로젝트에 어떤 스크립트가 정의돼 있는지부터 확인하세요.

npm run            # 정의된 스크립트 목록 출력
cat package.json   # scripts 블록 직접 확인 (Windows: type package.json)
2
2단계 — Missing script: 스크립트 정의·위치 확인

`Missing script: "dev"` 는 해당 키가 scripts 에 없다는 뜻입니다. 먼저 package.json 이 있는 루트 디렉터리에서 실행 중인지 확인하고, 없다면 scripts 에 키를 추가합니다. Next.js 기준 표준 스크립트는 아래와 같습니다. (프레임워크에 맞게 next 를 vite 등으로 교체)

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  }
}
3
3단계 — package.json 자체가 없을 때

`npm error enoent ENOENT: no such file or directory, open '.../package.json'` 이 뜨면 프로젝트 루트가 아니거나 초기화가 안 된 상태입니다. 루트로 이동하거나 새 프로젝트면 초기화 후 의존성을 설치합니다.

npm init -y
npm install
4
4단계 — ELIFECYCLE: 위쪽 실제 에러부터 읽기

`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
5
5단계 — build 메모리 부족(JS heap out of memory)

빌드가 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
6
6단계 — 윈도우 환경변수: cross-env (한국 개발자 필수)

맥/리눅스에서 잘 되던 `"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"
💡 예방: 스크립트 추가 시 dev/build/start 이름을 표준대로 통일하고, 환경변수가 들어가는 스크립트는 처음부터 cross-env 로 감싸 OS 차이를 없애세요. ELIFECYCLE 가 뜨면 npm 을 의심하기 전에 항상 그 위쪽의 실제 명령 에러부터 읽는 습관을 들이면 대부분 빠르게 잡힙니다.
npmnpm run devnpm run buildMissing scriptELIFECYCLEcross-envNODE_ENVpackage.json

관련 에러

관련 가이드

pnpm vs npm vs Yarn Berry 2026 — JavaScript 패키지 매니저 속도·디스크·워크스페이스 실전 비교Claude Code 소스코드 유출 사건 — npm 소스맵 실수로 51만 줄 노출, 공급망 보안까지 흔들렸다오픈소스 릴리즈 체크리스트 — npm·PyPI·GitHub 배포 전 놓치면 후회하는 38개 항목npm 패키지 공급망 공격으로 AWS 키가 탈취된 48시간 — 스타트업 보안 사고 실전 기록