Nodejs не может найти установленный модуль в Windows
Я изучаю nodejs на данный момент на Windows. Несколько модулей установлены глобально с npm.cmd, и nodejs не удалось найти установленные модули. Взять, к примеру, нефрит,
npm install jade -g
Jade устанавливается в каталог "C:\Program Files (x86)\nodejs\node_modules"
, но следующий код не будет выполнен с ошибкой "Cannot find module 'jade'"
,
var jade = require('jade');
Тем не менее, код будет работать успешно, когда Jade установлен локально (без опции -g в npm). Я не хочу использовать локально установленные модули, для меня это пустая трата дискового пространства. Как я могу заставить глобально установленные модули работать в Windows?
Ответы
Ответ 1
Добавьте переменную среды с именем NODE_PATH
и задайте для нее значение %USERPROFILE%\Application Data\npm\node_modules
(Windows XP), %AppData%\npm\node_modules
(Windows 7/8/10) или везде, где npm заканчивает установку модулей на ваш вкус Windows. Чтобы покончить с этим раз и навсегда, добавьте это как системную переменную на вкладке "Дополнительно" диалогового окна "Свойства системы" (запустите control.exe sysdm.cpl,System,3
).
Быстрое решение в Windows 7+ состоит в следующем:
rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules
Стоит отметить, что NODE_PATH
используется только при импорте модулей в приложениях Node. Если вы хотите использовать двоичные файлы глобально установленных модулей в вашем CLI, вам нужно добавить его также в вашу PATH
, но без части node_modules
(например, %AppData%\npm
в Windows 7/8/10).
Старый рассказ
Я новичок в node.js, поэтому могу быть не совсем прав, но по своему опыту это работает так:
- -g - это не способ установки глобальных библиотек, а только способ размещения их по системному пути, чтобы вы могли вызывать их из командной строки, не записывая полный путь к ним. Это полезно, например, тогда, когда приложение узла конвертирует локальные файлы, например, меньше - если вы устанавливаете его глобально, вы можете использовать его в любом каталоге.
- Сам узел .js не смотрел на глобальный каталог npm, он использует другой алгоритм для поиска необходимых файлов: http://nodejs.org/api/modules.html#modules_file_modules (в основном, он сканирует каждую папку в пути, начиная из текущей папки для node_modules и проверяет ее).
См. Аналогичный вопрос для получения более подробной информации: Как установить модуль глобально, используя npm?
Ответ 2
Если вы находитесь на платформе Windows 7, возможно, вы должны изменить NODE_PATH следующим образом:
%AppData%\npm\node_modules
Ответ 3
Я знаю, что могу пробудить зомби, но я думаю, что это все еще проблема, если вам нужен глобальный доступ к модулям node в Windows 7, вам нужно добавить это в свой глобальный путь:
C:\Users\{USER}\AppData\Roaming\npm
Важно: только это без части node_modules
, мне понадобилось полчаса, чтобы это увидеть.
Ответ 4
Чтобы заставить его работать в Windows 10, я решил его, добавив папку %USERPROFILE%\AppData\Roaming\npm
в мой PATH. При добавлении \node_modules
: %USERPROFILE%\AppData\Roaming\npm\node_modules\
не работает для меня.
Ответ 5
Я просто напишу из этого сообщения node
В общем, эмпирическое правило:
- Если вы устанавливаете что-то, что хотите использовать в своей программе, используя require ('whatever'), а затем установите его локально, в корне ваш проект.
- Если вы устанавливаете что-то, что хотите использовать в своей оболочке, в командной строке или что-то еще, установите ее глобально, чтобы ее двоичные файлы попадают в переменную среды PATH.
...
Конечно, есть случаи, когда вы хотите сделать то и другое. Coffee- script и Express оба являются хорошими примерами приложений, которые имеют интерфейс командной строки, а также библиотеку. В таких случаях вы можете выполните одно из следующих действий:
- Установите его в обоих местах. Серьезно, это вы на коротком диске на диске? На самом деле это прекрасно. Theyre крошечные программы JavaScript.
- Установите его по всему миру, а затем npm напишите кофе - script или npm link express (если вы на платформе, поддерживающей символические ссылки). Затем вам необходимо обновить глобальную копию, чтобы обновить все символические ссылки, как хорошо.
Ответ 6
Чтобы сделать это коротко, используйте npm link jade
в каталоге приложения.
Ответ 7
Пытался добавлять/редактировать переменные окружения и прийти к выводу, что:
- Изменить/добавить
User variables
(верхнего окна) вместо System variables
(нижней части); в противном случае вы должны "запустить как администратор", чтобы заставить его работать.
- Добавить
;%AppData%\npm
в Path
, чтобы использовать его как инструмент командной строки (если поддерживается, например jshint
и grunt-cli
).
- Создайте
NODE_PATH
и установите его %AppData%\npm\node_modules
для require('<pkg_name>')
в сценариях без его установки в каталоге проекта. (Но npm link
предлагается для этого требования, если вы работаете с ОС с mklink
, например Vista и новее.)
Условия тестирования:
- Win 7 (Ent., 64-bit, SP1), Node.js 4.2.4, npm 2.14.12
- Win 8.1 (Ent., 64-bit), Node.js 0.10.30, npm 1.4.21
Ответ 8
У меня было ужасное время, когда работали глобальные модули. В конце концов я явно добавил C:\Users\yourusername\AppData\Roaming\npm
в переменную PATH в System Variables. Мне также нужно было, чтобы эта переменная приходила к переменной пути nodejs в списке.
Я запускаю Windows 10.
Ответ 9
Я столкнулся с этой проблемой в Windows 7, запустив
npm install -g gulp
в качестве администратора при входе в систему как обычный пользователь.
Решение: При выполнении той же установки, что и обычный пользователь (а не "запустить как admin" для cmd), все было в порядке. Я думаю, это связано с установкой по умолчанию и поиском.
Ответ 10
Из моего опыта с win8.1 npm устанавливает модули на
C:\Users\[UserName]\AppData\Roaming\npm\node_modules
но dumply ищет их на
C:\Users\[UserName]\node_modules
.
Один простой ссылочный модуль решения в приложении по полному пути:
var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
Ответ 11
Для окон все говорят, что вы должны установить переменные окружения для модулей nodejs и npm, но знаете ли вы, почему?
Для некоторых модулей у них есть инструмент командной строки, после установки модуля есть файл [module].cmd в C:\Program Files\nodejs, и он используется для запуска в команде окна. Поэтому, если вы не добавляете путь, содержащий файл cmd, к переменным среды % PATH%, вы не сможете их успешно запустить через окно командной строки.
Ответ 12
У меня была та же проблема, пытаясь установить беседку с npm install -g bower
Я думаю, это было потому, что node был установлен другим пользователем, а не мной.
Я удалил node, а затем переустановил его. Во время установки я увидел этот текст для опции Добавить в PATH > npm modules:
Сообщение в node установка
![введите описание изображения здесь]()
После установки node я снова выполнил npm install -g bower
. И теперь работает беседа.
Несомненно, не нужно переустанавливать node с собственным пользователем, как я. Решение должно быть через переменные NODE_PATH или PATH, как объяснили другие пользователи.
Следует отметить, что эта проблема возникает только в том случае, если node был установлен другим пользователем (или если во время установки опция Добавить в PATH > модули npm не была отмечена).
Ответ 13
В качестве альтернативы вы можете добавить ~/.npmrc
вправо префикс. У меня есть C:\Program Files\nodejs
для 64 Win7.
Ответ 14
Я наткнулся на этот вопрос, потому что я хочу использовать node.js с visual studio 2015 на моем новом компьютере с окнами 10. Я использовал node.js для окон 7 и 8 и 8.1 Никогда не проблема node.js нахождение модуля. Я использую устаревшее node.js 0.10.39, потому что я должен использовать эту версию из-за модуля serial и RFXCOM.
Ответ для Windows 10 заключается в установке NODE_PATH в переменных среды с помощью C:\Users\User\ node_modules.
Ответ 15
Для Windows 10 мне пришлось локально установить gulp в папку:
C:\Users\MyAccount\AppData\Roaming\НПМ\node_modules
npm install gulp
Это исправлено. Моя проблема "gulp не распознается"
Ответ 16
Просто скачайте и переустановите node из this, и это устранит все проблемы с пути.
Не забудьте перезапустить командную строку или терминал.
Ответ 17
Все вышеперечисленные ответы не спомогли мне. В конечном итоге единственное, что сработало, - это добавление% AppData%\npm в переменную Path среды, И, чтобы удалить два файла ng в C:\Program Files\nodejs.
Пакеты ng не были установлены в C:\Program Files\nodejs\node_modules, поэтому было очевидно, что использование двоичного файла ng из каталога nodejs не будет работать.
Я не уверен, почему он искал в этом каталоге, потому что я уже настроил
- переменная окружения PATH
-.npmrc в C:\Users\MyUser
- Попытался добавить системные переменные и/или NODE_PATH
Ответ 18
У меня работал на Windows 10 npm config set prefix %AppData%\npm\node_modules
Ответ 19
если вы используете окна, требуется несколько шагов,
1) создайте файл с именем package.json
{
"name": "hello"
, "version": "0.0.1"
, "dependencies": {
"express": "*"
}
}
где hello - это имя пакета, а * означает последнюю версию вашей зависимости
2) в каталог проекта и выполните следующую команду
npm install
Он устанавливает зависимости