В чем разница между require ('mypackage.js') и require ('mypackage')?

Оба этих оператора require выглядят одинаково:

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

var Mypackage require('mypackage');

Есть ли разница между ними?

Ответ 1

Вот ответ:

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;
};
  • Node.JS показывает, является ли данный модуль основным модулем. (например, http, fs и т.д.) Всегда занимает приоритет в модулях загрузки.
  • Если данный модуль не является основным модулем (например, http, fs и т.д.), Node.js начнет поиск каталога с именем node_modules.
    Он начнется в текущем каталоге (относительно текущего исполняемого файла в Node.JS), а затем проделайте путь вверх по иерархии папок, проверяя каждый уровень для папки node_modules. После Node.JS находит папку node_modules, затем попытается загрузить данный модуль либо в виде файла (.js) JavaScript или как именованный подкаталог; если он найдет именованный подкаталог, он попытается загрузить файл по-разному. Итак, например
  • Если вы сделаете запрос на загрузку модуля, "utils" и его каталог не файл .js, то: Node.JS будет искать иерархический каталог для node_modules и utils следующими способами:
    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
  • Если Node.JS до сих пор не может найти файл выше, Node.js начнет смотреть в пути каталога из переменных среды, т.е. NODE_PATH, установленных на вашем компьютере (очевидно, установленным файлом установщика Node.JS, если вы находитесь в окнах) Не найден во всех вышеперечисленных шагах, затем трассирует трассировку стека stder
    Например: Error: Cannot find module 'yourfile'
    Для получения дополнительной информации: ссылка здесь даже циклический require() объясняется очень хорошо.