require()
と load()
の違い
項目一覧
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 モジュール解決アルゴリズム を使用します 、shell の現在の作業ディレクトリから起動します。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-fnd をロードするには と呼ばれる
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 スクリプト内では使用できません。
重要
mongosh
スクリプトと Node.js スクリプトは異なる コンテキスト で実行 。それぞれのタイプのスクリプトで同じコマンドを実行すると、異なるデータ型が返されるなど、異なる動作が見られる場合があります。 したがって、Node.js スクリプト内でmongosh
コードを実行すると、予期しない結果が生じる可能性があります。
一般に、Node.js スクリプト内に mongosh 固有のコードを保持しないでください。