nodejsパス解析順序
1644 ワード
前言
通常、nodejsを使用してrequireに行くときに絶対パスや相対パスを使用して参照しているのではないでしょうか.nodejs解析パスの順序はどうなっていますか.次にnodejsパス解析の順序についてお話しします
相対パス解析順序
ファイルパスがから に行きます. mainフィールドがない場合、nodejsは
絶対パス解析順序
ファイルパスが
通常、nodejsを使用してrequireに行くときに絶対パスや相対パスを使用して参照しているのではないでしょうか.nodejs解析パスの順序はどうなっていますか.次にnodejsパス解析の順序についてお話しします
相対パス解析順序
ファイルパスが
/root/src/moduleA.js
であり、インポートvar x = require("./moduleB");
、すなわち相対パスをインポートするモジュールが含まれていると仮定すると、Node.jsは、このインポートを次の順序で解析する./root/src/moduleB.js
の経路が存在するかどうかは、存在しない場合は次のステップに進みます./root/src/moduleB
ディレクトリにpackage.json
ファイルが含まれているかどうかを確認し、package.json
ファイルは「main」モジュールを指定します.たとえば、Node.jsはファイル/root/src/moduleB/package.json
が{ "main": "lib/mainModule.js" }
を含んでいることを発見し、nodejsは/root/src/moduleB/lib/mainModule.js
/root/src/moduleB
ディレクトリにindex.js
ファイルが含まれているかどうかを確認します.このファイルはそのフォルダの下の「main」モジュールとして暗黙的に扱われます.絶対パス解析順序
ファイルパスが
/root/src/moduleA.js
で、var x = require("moduleB");
、すなわち絶対パスをインポートするモジュールが含まれていると仮定すると、Node.jsは、このインポートを次の順序で解析します./root/src/node_modules/moduleB.js
/root/src/node_modules/moduleB/package.json
(mainフィールドが指定されており、上の相対パスと同じ)/root/src/node_modules/moduleB/index.js
上の3つが見つからない場合は、上のレベルのディレクトリを探します:/root/node_modules/moduleB.js
/root/node_modules/moduleB/package.json
/root/node_modules/moduleB/index.js
まだ見つかっていない場合は、上のレベルへ探し続けます:/node_modules/moduleB.js
/node_modules/moduleB/package.json
/node_modules/moduleB/index.js