nodejsパス解析順序

1644 ワード

前言
通常、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
  • に行きます.
  • mainフィールドがない場合、nodejsは/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