В чем разница между require (‘mypackage.js’) и require (‘mypackage’)?
Оба эти require
чтобы они работали одинаково:
var Mypackage = require('mypackage.js');
var Mypackage require('mypackage');
- Библиотека Rails 3 не загружается, пока не потребуется
- Как сделать node.js абсолютным? (вместо относительного)
- Когда следует использовать require () и когда использовать define ()?
Есть ли разница между ними?
Вот ответ:
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, если вы находитесь в windowsх ) Не найден во всех вышеперечисленных шагах, затем печатает трассировку стека на stder
Например :Error:
Cannot find module 'yourfile'
Для получения дополнительной информации: ссылка здесь даже циклическая require () объясняется очень хорошо.