11

これらのrequireステートメントはどちらも同じように機能するようです。

var Mypackage = require('mypackage.js');

var Mypackage require('mypackage');

それらの間に違いはありますか?

4

1 に答える 1

16

答えは次のとおりです。

Module.prototype.load = function(filename) {
  debug('load ' + JSON.stringify(filename) +
        ' for module ' + JSON.stringify(this.id));

  assert(!this.loaded);
  this.filename = filename;
  this.paths = Module._nodeModulePaths(path.dirname(filename));

  var extension = path.extname(filename) || '.js';
  if (!Module._extensions[extension]) extension = '.js';
  Module._extensions[extension](this, filename);
  this.loaded = true;
};
  1. Node.JSは、指定されたモジュールがコア モジュールであるかどうかを確認します。(例: httpfsなど) モジュールのロードでは常に優先されます。
  2. 指定されたモジュールがコア モジュール (例: など) でない場合httpfsNode.js は という名前のディレクトリの検索を開始しますnode_modules現在のディレクトリ ( Node.JS
    で現在実行中のファイルに関連する) で開始し、フォルダー階層を上っていき、各レベルで node_modules フォルダーをチェックします。Node.JSがフォルダーを見つけると、指定されたモジュールを (.js) JavaScript ファイルまたは名前付きサブディレクトリとしてロードしようとします。指定されたサブディレクトリが見つかった場合は、さまざまな方法でファイルをロードしようとします。たとえば、node_modules
  3. モジュール「utils」とそのディレクトリ (.js ファイルではない) をロードするリクエストを行うと、
    Node.JSは次の方法で 階層ディレクトリnode_modulesを 検索します。utils
    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
  4. 上記の手順でNode.JSがまだファイルを見つけられない場合、Node.js は環境変数からディレクトリ パスを調べ始めNODE_PATHます。上記のすべての手順で見つかりませんでした。スタック トレースをstderに出力します
    :詳細については、こちらのリンクを参照してください。周期的な require()についても詳しく説明されています。Error:Cannot find module 'yourfile'
于 2013-03-18T07:54:10.573 に答える