첫 번 째 방법 은 루트 디 렉 터 리 에 package. json 파일 을 만 들 고 main 모듈 을 지정 하 는 것 입 니 다.예, package. json 파일 유사:
{ "name" : "app",
"main" : "./lib/app.js" }
이것 이... / app 디 렉 터 리 에 있다 면 require ('/ app') 는... / app / lib / app. js 를 불 러 오 려 고 합 니 다.이것 이 바로 Node. js 가 package. json 파일 을 처리 하 는 방식 입 니 다.메모: package. json 에서 "main" 입구 에 지정 한 파일 이 존재 하지 않 으 면 해석 할 수 없습니다. Node. js 는 모듈 을 존재 하지 않 는 것 으로 보고 기본 오 류 를 던 집 니 다.
Error: Cannot find module 'some-library'
디 렉 터 리 에 package. json 파일 이 없 으 면 Node. js 는 디 렉 터 리 에 있 는 index. js 나 index. node 파일 을 불 러 오 려 고 합 니 다.위의 예 에 package. json 파일 이 없 으 면 require ('/ app') 는 불 러 오 려 고 합 니 다.
./app/index.js
./app/index.node
require 파일 모듈
정확 한 파일 이름 으로 모듈 을 찾 지 못 하면 Node. js 는. js,. json 또는. node 확장 명 을 가지 고 다시 불 러 오 려 고 시도 합 니 다.
. js 파일 은 JavaScript 텍스트 파일 로,. json 파일 은 JSON 텍스트 파일 로 해 석 됩 니 다.node 파일 은 dlopen 을 통 해 불 러 온 컴 파일 된 플러그 인 모듈 로 분 석 됩 니 다.
'/' 를 접두사 로 하 는 모듈 은 파일 의 절대 경로 입 니 다.예 를 들 어 require ('/ home / app / app. js') 는 / home / app / app. js 파일 을 불 러 옵 니 다.
'. /' 를 접두사 로 하 는 모듈 은 require () 를 호출 하 는 파일 에 비해 서 입 니 다.즉, circle. js 는 app. js 와 같은 디 렉 터 리 에서 require ('/ circle') 가 찾 을 수 있 도록 해 야 합 니 다.
'/', '/' 또는 '.. /' 로 시작 하지 않 았 을 때 이 모듈 은 핵심 모듈 이거 나 node 에서 불 러 와 야 합 니 다.modules 디 렉 터 리.주어진 경로 가 존재 하지 않 으 면 require () 는 code 속성 을 'MODULE' 로 던 집 니 다.NOT_FOUND 의 오류.
require 의 캐 시 메커니즘
모듈 은 처음 불 러 온 후에 캐 시 됩 니 다.이것 은 (다른 캐 시 시스템 과 유사) 매번 require ('app') 를 호출 할 때마다 같은 파일 로 해석 하면 같은 대상 으로 돌아 간 다 는 것 을 의미한다.
require (app) 를 여러 번 호출 하면 모듈 의 코드 가 여러 번 실행 되 지 않 습 니 다.이것 은 중요 한 특성 이다.모듈 을 여러 번 실행 하려 면 함 수 를 내 보 내 고 이 함 수 를 호출 할 수 있 습 니 다.주의사항:
모듈 은 해 석 된 파일 이름 을 기반 으로 캐 시 됩 니 다.호출 모듈 의 위치 가 다 르 기 때문에 모듈 은 서로 다른 파일 이름 으로 분 석 될 수 있 습 니 다.
또한 대소 문 자 를 구분 하지 않 는 파일 시스템 이나 운영 체제 에서 서로 다른 파일 이름 으로 해석 되 어 같은 파일 을 가리 킬 수 있 지만 캐 시 는 서로 다른 모듈 로 보고 여러 번 다시 불 러 옵 니 다.예 를 들 어 require ('/ app') 와 require ('/ APP') 는 두 개의 서로 다른 대상 을 되 돌려 줍 니 다. / app 과. / APP 가 같은 파일 인지 아 닌 지 는 상관 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: