npm 패키지를 가져오는 경로
공식 문서는 npm: 지정자와 package.json 의존성을 모두 안내합니다. 이미 package.json이 있는 프로젝트는 그 파일의 패키지·작업 구성을 먼저 읽습니다. Deno가 npm을 지원한다는 이유만으로 모든 Node API와 모든 도구의 디스크 구조 요구가 동일해지는 것은 아닙니다.
현재 호환 문서도 일부 API가 부분 지원이며 네이티브 애드온과 npm의 디스크 배치에 의존하는 도구에 추가 조건이 있다고 명시합니다. 특정 프로젝트의 성공 여부는 그 의존성으로 따로 확인해야 합니다.
node_modules 준비 방식
nodeModulesDir 설정과 프로젝트 형태에 따라 자동·수동 준비 흐름이 달라집니다. 수동 방식에서는 deno install로 의존성을 준비한 뒤 실행합니다. 자동 방식을 고르면 실행 과정에서 준비가 일어날 수 있습니다.
| 확인할 상태 | 다음 확인 |
|---|---|
| 패키지 지정자가 해석되지 않음 | 이름·버전·등록소와 프로젝트 설정 |
| node_modules가 최신이 아니라고 안내함 | 수동 설치 누락과 설정 방식 |
| 패키지는 있지만 네이티브 파일이 없음 | 설치 스크립트의 보류 여부 |
| 네이티브 로딩 권한이 거절됨 | 해당 코드의 신뢰성과 FFI 허용 범위 |
설치 스크립트는 별도 승인
Deno는 npm의 생명주기 스크립트를 기본 실행하지 않습니다. postinstall로 네이티브 바인딩을 만들거나 내려받는 패키지는 설치 목록에 있어도 실행에 필요한 파일이 없을 수 있습니다.
현재 문서는 deno approve-scripts로 보류된 스크립트를 검토하거나 특정 패키지의 스크립트만 허용하는 방식을 안내합니다. 경고를 없애기 위해 모든 패키지의 스크립트를 일괄 허용하기보다 무엇을 실행·다운로드하는지 확인합니다. 이 글은 승인 명령을 실제로 실행한 결과가 아닙니다.
네이티브 애드온의 권한
Node-API 애드온에는 로컬 node_modules와 --allow-ffi가 필요합니다. FFI로 불러온 네이티브 코드는 JavaScript 권한 검사와 같은 방식으로 제한되지 않습니다. 따라서 다른 권한 플래그를 좁혔다는 이유만으로 네이티브 라이브러리의 동작도 같은 범위로 격리된다고 판단하지 않습니다.
설치 단계의 스크립트 승인과 실행 단계의 FFI 승인은 목적이 다릅니다. 둘 중 하나를 허용했다고 다른 단계의 누락이 자동으로 해결되지는 않습니다.
설치 성공과 실행 실패를 나누는 사례
가상의 프로젝트에서 의존성 목록은 생겼지만 시작할 때 바인딩 파일을 찾을 수 없다고 가정해 보겠습니다. 먼저 설치 출력에 보류된 스크립트 경고가 있었는지 확인합니다. 그다음 패키지의 공식 설치 요구와 현재 플랫폼을 대조합니다.
파일이 실제로 만들어진 뒤 권한 오류가 발생한다면 앞의 파일 누락과 별개의 문제입니다. 이 순서는 두 오류를 같은 문제로 묶어 반복 설치하는 일을 줄이는 자체 진단 사례입니다. 실제 npm 패키지 설치·외부 다운로드·스크립트 실행·FFI 로딩은 검수하지 않았습니다.
목적별 가이드
| 하려는 일 | 가이드 |
|---|---|
| Deno 설치와 파일 읽기 권한부터 구분하기 | Deno 첫 사용 |
| TypeScript 실행과 다른 런타임의 설치 흐름 보기 | Bun 첫 사용 |
| Node.js의 기본 실행 준비 확인하기 | Node.js 가이드 |