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()
は標準のNode.jsモジュール解決アルゴリズム を、require()
が呼び出されたファイルから開始して使用します。
mongosh スクリプトで外部コードをロードする
mongosh
スクリプトファイルには、npm パッケージや個別のmongosh
スクリプトなどの外部コードをロードできます。
別の
mongosh
スクリプトからmongosh
スクリプトを読み込むには、__dirname
環境変数を使用します。__dirname
環境変数は、実行中のファイルを含むディレクトリの絶対パスを返します。例
別の
mongosh
スクリプトからtest-suite.js
という名前のmongosh
スクリプトを読み込むには、スクリプトに次の行を追加します。load(__dirname + '/test-suite.js') _dirname
変数を使用して絶対パスを指定すると、ロードしている個別のスクリプトが、mongosh
が起動された場所などの外部要因の影響を受けないようになります。mongosh
スクリプトから Node.js スクリプトを読み込むには、require()
メソッドを使用します。例
と呼ばれる スクリプトから date-fms
mongosh
test-suite2.js
モジュールをロードするには、スクリプトに次の行を追加します。const localRequire = require('date-fns').createRequire(__filename); const fileExports = localRequire('./test-suite2.js'); }
require() パッケージ化に関する考慮事項
Node.js モジュールには 2 つのパッケージ化標準があります。
パッケージング標準 | require() との連携 |
---|---|
| はい |
| No |
mongosh
では ES モジュールをrequire()
できません。 ES モジュールの機能を使用する場合は、代わりに使用できる CommonJS バージョンがあるかどうかを確認してください。 詳しくは、以下を参照してください。
mongosh API へのアクセス
mongosh
スクリプトはmongosh
API を使用できます。Node.js スクリプトは
mongosh
API にアクセスできません。
たとえば、 db
グローバル変数(現在のデータベースを表示するために使用)はmongosh
スクリプト内で使用できます。 Node.js スクリプト内では使用できません。