Node.js
Как загружаются модули
Поиск…
Глобальный режим
Если вы установили узел с использованием каталога по умолчанию, а в глобальном режиме, NPM устанавливает пакеты в /usr/local/lib/node_modules
. Если вы введете следующее в оболочке, NPM будет искать, загружать и устанавливать последнюю версию пакета с именем sax внутри каталога /usr/local/lib/node_modules/express
:
$ npm install -g express
Убедитесь, что у вас есть достаточные права доступа к папке. Эти модули будут доступны для всех процессов узла, которые будут работать на этом компьютере
В локальном режиме установки. Npm загрузит и установит модули в текущие рабочие папки, создав новую папку node_modules
например, если вы находитесь в /home/user/apps/my_app
создана новая папка, называемая node_modules
/home/user/apps/my_app/node_modules
если его еще не существует
Загрузочные модули
Когда мы ссылаемся на модуль в коде, узел сначала ищет папку node_module
внутри указанной папки в требуемом заявлении. Если имя модуля не является относительным и не является основным модулем, Node будет пытаться найти его внутри папки node_modules
в текущем каталог. Например, если вы выполните следующее, Node попытается найти файл ./node_modules/myModule.js
:
var myModule = require('myModule.js');
Если Node не сможет найти файл, он будет выглядеть внутри родительской папки с именем ../node_modules/myModule.js
. Если он не сработает снова, он попробует родительскую папку и продолжит спускаться до тех пор, пока не достигнет корня или не найдет необходимый модуль.
Вы также можете опустить расширение .js
если хотите, и в этом случае узел добавит расширение .js
и будет искать файл.
Загрузка модуля папок
Вы можете использовать путь к папке для загрузки модуля следующим образом:
var myModule = require('./myModuleDir');
Если вы это сделаете, узел будет искать внутри этой папки. Узел предположит, что эта папка представляет собой пакет и попытается найти определение пакета. Это определение пакета должно быть файлом с именем package.json
. Если в этой папке не содержится файл определения пакета с именем package.json
, точка ввода пакета будет принимать значение по умолчанию index.js
, а в этом случае Node будет искать файл по пути ./myModuleDir/index.js
.
Последнее, если модуль не найден ни в одной из папок, это папка установки глобального модуля.