Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

npm ENOENT: package.json을 만들기 전에 실패 경로를 확인하세요

정확한 오류 경로와 호출자 디렉터리를 보존하고 누락된 체크아웃, 루트, workspace, 실행기를 구분하세요. 빈 매니페스트가 해결이 아닌 이유를 로컬 대조군으로 검증했습니다.

원본 일러스트: 정확한 누락 경로, 호출자, 저장소 매니페스트와 대상을 보존한 뒤 원래 작업 흐름을 검증합니다. 고객 기록이 아닌 설명 도표입니다.
원본 일러스트: 정확한 누락 경로, 호출자, 저장소 매니페스트와 대상을 보존한 뒤 원래 작업 흐름을 검증합니다. 고객 기록이 아닌 설명 도표입니다. Watch at Ease

npm이 package.json ENOENT를 보고하면 먼저 열려고 한 경로를 보존하세요. 경로 요소 누락은 잘못된 디렉터리, 불완전한 체크아웃, 다른 패키지 선택에서 비롯될 수 있습니다. 메시지만으로 해결 방법이 정해지지는 않습니다.

격리된 Node v24.19.0/npm 11.9.0 대조군은 루트·workspace 스크립트, 추적되지만 누락된 매니페스트, 무관한 빈 매니페스트를 구분했으며 열 가지 검사가 통과했습니다. 이는 경로 우선 점검의 예이며 과거 Windows --prefix 문제 재현이나 설치·CI 빌드 성공의 증명이 아닙니다.

실패 경로와 호출자 보존

파일을 고치기 전에 code, syscall, path와 전체 명령을 복사하세요. 호출자의 시작 디렉터리, Node/npm 버전, npm을 시작한 IDE 작업·CI 단계·서비스를 기록합니다. 드라이브 문자, 컨테이너 경로, 심볼릭 링크 맥락을 보존하고 공유용 사본에서만 개인 경로를 가리세요.

로그를 의도한 저장소와 패키지에 대조합니다. npm 스크립트 작업 디렉터리는 최초 호출 디렉터리와 다를 수 있습니다. 명시적 prefix 대조군은 루트 패키지에서 스크립트를 실행했지만 INIT_CWD는 부모 디렉터리를 유지했습니다. 스크립트 cwd만으로 원래 명령의 시작 위치를 재구성할 수 없습니다.

만들기 전에 매니페스트 위치 확인

확인한 저장소 루트에서 추적된 package.json 경로, 선택한 커밋, 실제 작업 파일을 오류 경로와 비교하세요. Git 루트에서 git ls-files -- package.json ':(glob)**/package.json'은 루트와 중첩 매니페스트의 추적 경로를 나열합니다. 이는 인덱스 증거이지 현재 파일 존재나 바이트의 정확성을 증명하지 않습니다.

현재 체크아웃이나 산출물에 있어야 하는 파일이면 로컬 변경을 보존하고 프로젝트의 정상 절차로 복구하세요. 오류를 없애려고 npm init부터 실행하지 마세요. 직접 만든 대조군에서는 작업 파일을 지워도 Git이 package.json을 나열했으며 원래 바이트를 복원하자 의도한 스크립트가 실행됐습니다.

루트 또는 실제 workspace 선택

루트 workspaces 설정과 관련 하위 매니페스트를 읽으세요. 선택기는 선언된 패키지 이름이나 경로를 사용할 수 있으며 마지막 폴더 이름이 패키지 이름인 것은 아닙니다. npm v11 문서는 workspace 안에서 시작하면 해당 문맥이 선택되고 prefix는 workspace 루트로 설정된다고 설명합니다.

대조군 루트는 packages/a를 선언했고 하위 매니페스트 이름은 fixture-a였습니다. npm run probe --workspace=fixture-a와 하위 디렉터리에서 probe 실행은 모두 하위 스크립트를 선택했습니다. 추측한 --workspace=a는 ENOENT가 아닌 No workspaces found를 냈습니다. 새 오류는 다른 분기로 보존하고 누락 파일 진단에 끼워 맞추지 마세요.

호출 방식과 버전 범위 비교

작고 허가된 재현으로 원래 실행기를 확인된 패키지 직접 진입, 명시 workspace 선택, 원래 prefix 방식과 비교하세요. 시작·실행 디렉터리를 출력하고 도구가 제공하면 해결된 매니페스트를 기록합니다. 한 번에 호출 방식 하나만 바꾸며 비교 중 캐시나 매니페스트를 교체하지 마세요.

공개 npm issue7722는 특정 구버전의 Windows --prefix install 실패와 cd·ci 우회 보고를 보존합니다. not planned 종료는 영향받는 모든 버전이 고쳐졌다는 보증이 아닙니다. Linux/npm11.9.0의 --prefix project run probe는 성공했지만 이는 스크립트 대조군이며 Windows npm install, 의존성 해결, 운영 회귀 시험이 아닙니다.

증명된 원인만 수정

잘못된 디렉터리는 의도한 패키지를 지정하고 추적 파일 누락은 체크아웃·산출물을 복구하세요. 실행기 cwd는 해당 작업에 명시하고 workspace 선택기 오류는 검증한 이름이나 경로를 사용합니다. 버전 의존 문제는 최소 재현과 범위가 정해진 버전·우회 결정을 요구합니다. 과거 우회를 모든 ENOENT에 적용하지 마세요.

빈 디렉터리와 추적 파일 누락 대조군 모두 정확한 package.json 누락 경로로 실패했습니다. 빈 디렉터리에 {}를 놓자 읽을 수는 있었지만 Missing script: probe가 나왔고 원래 스크립트나 의존성은 복원되지 않았습니다. 오류 메시지 하나의 제거는 의도한 프로젝트 복구보다 약한 결과입니다.

원래 작업 흐름의 성공 요구

원래 실행기로 돌아가 의도한 버전과 workspace 대상으로 원래 install, ci 또는 스크립트를 다시 실행하세요. 호출 디렉터리, 매니페스트 식별 정보, 종료 상태, 예상 출력이나 프로젝트 검사를 보존합니다. 다른 명령의 성공은 비교 증거이지 원래 실패 작업의 완료가 아닐 수 있습니다.

열 가지 검사는 Linux·Node v24.19.0·npm11.9.0에서 새로 만든 로컬 대조군만 사용했습니다. 통제된 probe와 추적 파일 검사만 했고 의존성 설치나 네트워크 접근은 없었습니다. Windows, IDE, CI 서비스, 개인 저장소, 과거 --prefix 회귀는 재현하지 않았습니다. 연결된 npm v11 문서는 Legacy로 표시된 버전 분기이며 최신 CLI라는 주장이 아닙니다.

원본 일러스트: 잘못된 디렉터리, 불완전한 체크아웃, workspace 대상, 재현된 도구 회귀에는 서로 다른 증거와 조치가 필요합니다.
원본 일러스트: 잘못된 디렉터리, 불완전한 체크아웃, workspace 대상, 재현된 도구 회귀에는 서로 다른 증거와 조치가 필요합니다. Watch at Ease