require() 및 load() 메서드는 기능 추가를 위해 스크립트에 파일과 모듈을 포함합니다. 그러나 require() 및 load() 는 동작과 가용성이 다릅니다.
mongosh의 스크립트 유형
mongosh 에서 다음 유형의 스크립트를 사용할 수 있습니다.
mongosh스크립트는 다음 중 하나일 수 있습니다.REPL에 직접 입력된 코드입니다.
mongoshrc.js 파일.
load() 메서드로 로드된 코드입니다.
Node.js 스크립트: npm 패키지를 포함하여
require()로 로드된 모든 스크립트입니다. 이러한 스크립트는 항상 파일입니다.
require() 및 load()의 가용성
require() 및 load() 메서드는 사용 중인 스크립트 유형에 따라 가용성이 다릅니다.
mongosh스크립트에서는require()및load()을(를) 모두 사용할 수 있습니다.Node.js 스크립트에서는
require()만 사용할 수 있습니다.
require() 및 load()의 파일 경로
스크립트 유형에 따라 require() 또는 load() 파일 경로를 지정하는 방법이 결정됩니다.
mongosh스크립트에서:require()셸 의 현재 작업 디렉토리 에서 시작하여 표준 Node.js 모듈 확인 알고리즘 을 사용합니다.load()둘 중 하나를 사용합니다.절대 경로 또는
상대 경로입니다. 상대 경로를 사용하는 경우, 경로는 항상 shell의 현재 작업 디렉토리를 기준으로 한 경로로 해석됩니다.
Node.js
require()스크립트에서require()은(는) 가 호출된 파일 부터 시작하여 표준 Node.js 모듈 확인 알고리즘 사용합니다.
mongosh 스크립트에서 외부 코드 로드
npm 패키지 또는 별도의 mongosh 스크립트와 같은 mongosh 스크립트 파일에서 외부 코드를 로드할 수 있습니다.
다른
mongosh스크립트에서mongosh스크립트를 로드하려면__dirname환경 변수를 사용합니다.__dirname환경 변수는 실행 중인 파일이 포함된 디렉토리의 절대 경로를 반환합니다.예시
다른
mongosh스크립트에서test-suite.js이라는 이름의mongosh스크립트를 로드하려면 스크립트에 다음 줄을 추가하세요.load(__dirname + '/test-suite.js') _dirname변수를 사용하여 절대 경로를 지정하면 로드하는 별도의 스크립트가mongosh이(가) 시작된 위치와 같은 외부 요인의 영향을 받지 않습니다.mongosh스크립트에서 Node.js 스크립트를 로드하려면require()메서드를 사용합니다.예시
test-suite2.js라는mongosh스크립트에서 date-fns 모듈을 로드하려면 스크립트에 다음 줄을 추가합니다.const localRequire = require('date-fns').createRequire(__filename); const fileExports = localRequire('./test-suite2.js'); }
require() 패키징 고려 사항
Node.js 모듈에는 두 가지 패키징 표준이 있습니다.
패키지 표준 | require()와 함께 작동합니다 |
|---|---|
| 예 |
| No |
mongosh에서 ES 모듈을 require() 할 수 없습니다. ES 모듈의 기능을 사용하려면 대신 사용할 수 있는 CommonJS 버전이 있는지 확인하세요. 자세한 내용은 다음을 참조하세요.
mongosh API에 액세스
mongosh스크립트는mongoshAPI를 사용할 수 있습니다.Node.js 스크립트에
mongoshAPI에 대한 액세스 권한이 없습니다.
예를 들어, db 글로벌 변수(현재 데이터베이스를 표시하는 데 사용됨)는 mongosh 스크립트 내에서 사용할 수 있습니다. Node.js 스크립트 내에서는 사용할 수 없습니다.
중요
mongosh 스크립트와 Node.js 스크립트는 서로 다른 컨텍스트에서 실행. 각 유형의 스크립트 에서 동일한 명령이 실행 때 서로 다른 데이터 유형을 반환하는 등 서로 다른 동작을 보일 수 있습니다. 따라서 Node.js 스크립트 내에서 mongosh 코드를 실행 예기치 않은 결과가 발생할 수 있습니다.
일반적으로 mongosh 전용 코드를 Node.js 스크립트 내에 보관해서는 안 됩니다.