it-swarm.com.ru

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?

215
Cosmore

Добавьте переменную окружения с именем 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, поэтому могу быть не совсем прав, но по своему опыту это работает так:

  1. -g - это не способ установки глобальных библиотек, это всего лишь способ разместить их по системному пути, чтобы вы могли вызывать их из командной строки, не записывая полный путь к ним. Это полезно, например, когда приложение-узел преобразует локальные файлы, например less - если вы устанавливаете его глобально, вы можете использовать его в любом каталоге.
  2. сам узел.js не смотрел на глобальный каталог npm, он использует другой алгоритм для поиска необходимых файлов: http://nodejs.org/api/modules.html#modules_file_modules (в основном он сканирует каждую папку в путь, начиная с текущей папки node_modules, и проверяет ее).

См. Аналогичный вопрос для получения более подробной информации: Как я могу установить модуль глобально, используя npm?

318
Alexey Ivanov

если вы находитесь на платформе Windows7, возможно, вам следует изменить NODE_PATH следующим образом: %AppData%\npm\node_modules

33
Jack

Я знаю, что могу разбудить зомби, но я думаю, что это все еще проблема, если вам нужен глобальный доступ к модулям узлов в Windows 7, вам нужно добавить это в путь к глобальной переменной: 

C:\Users\{USER}\AppData\Roaming\npm

Важно: только это без node_modules, мне потребовалось полчаса, чтобы увидеть это.

24
Vitaliy Terziev

Для того, чтобы заставить его работать на Windows 10, я решил это, добавив папку %USERPROFILE%\AppData\Roaming\npm в мой PATH. После добавления \node_modules так: %USERPROFILE%\AppData\Roaming\npm\node_modules\ у меня не работает.

15
Andi-lo

Я просто процитирую из этого узла сообщение в блоге ...

В общем, эмпирическое правило таково:

  • Если вы устанавливаете что-то, что хотите использовать в своей программе, с помощью require («что угодно»), то устанавливайте это локально, в корне ваш проект.
  • Если вы устанавливаете что-то, что хотите использовать в своей командной консоли, в командной строке или что-то еще, установите это глобально, чтобы его двоичные файлы попадают в переменную окружения PATH.

...

Конечно, есть некоторые случаи, когда вы хотите сделать и то, и другое. Coffee-script и Express оба являются хорошими примерами приложений, которые имеют интерфейс командной строки, а также библиотека. В этих случаях вы можете Выполните одно из следующих действий:

  1. Установите его в обоих местах. Серьезно, тебе не хватает места на диске? Это нормально, правда. Это крошечные JavaScript-программы.
  2. Установите его глобально, а затем npm link coffee-script или npm link express (если вы работаете на платформе, поддерживающей символические ссылки.) Затем вам нужно только обновить глобальную копию, чтобы обновить все символические ссылки как Что ж.
12
soemarko

Чтобы сделать его коротким, используйте npm link jade в каталоге вашего приложения.

10
sntran

Попытался добавить/отредактировать переменные окружения и прийти к выводу, что:

  1. Редактировать/добавить User variables (из верхнего поля) вместо System variables (из нижней части); в противном случае вам нужно «работать от имени администратора», чтобы все заработало.
  2. Добавьте ;%AppData%\npm к Path, чтобы использовать его в качестве инструмента командной строки (если поддерживается, например, jshint и grunt-cli).
  3. Создайте 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
Kong Kao

Я столкнулся с этой проблемой на Windows 7, работает

npm install -g gulp

как администратор при входе в систему как обычный пользователь.

Решение: При выполнении той же установки, что и обычному пользователю (не «запускать от имени администратора» для cmd) все было в порядке. Я думаю, что это связано с установкой по умолчанию и пути поиска.

5
Sebastian

У меня было ужасное время заставить работать глобальные модули. В конце концов, я явно добавил C:\Users\yourusername\AppData\Roaming\npm к переменной PATH в разделе «Системные переменные». Мне также нужно было, чтобы эта переменная была перед переменной пути nodejs в списке.

Я использую Windows 10.

5
John Galt

Что касается окон, все говорили, что вы должны установить переменные окружения для модулей nodejs и npm, но знаете ли вы почему? Для некоторых модулей у них есть инструмент командной строки, после установки модуля есть [module] .cmd Файл находится в C:\Program Files\nodejs и используется для запуска в команде окна. Поэтому, если вы не добавите путь, содержащий файл cmd, в переменные среды % PATH%, вы не запустите их успешно через командное окно.

3
Kiki.J.Hu

Из моего опыта работы с win8.1 npm устанавливает модули на C:\Users\[UserName]\AppData\Roaming\npm\node_modules но дампли ищет их в C:\Users\[UserName]\node_modules.

Один простой справочный модуль решения в приложении по полному пути:

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
3
Saulius

У меня была такая же проблема, пытаясь установить Bower с npm install -g bower

Я думаю, это потому, что узел был установлен другим пользователем, а не мной.

Я удалил узел, а затем переустановил его. Во время установки я видел этот текст для опции Добавить в PATH> npm modules:

Сообщение в узле установки

 enter image description here

После установки узла я снова выполнил npm install -g bower. И теперь беседка работает.

Конечно, нет необходимости переустанавливать узел с собственным пользователем, как я. Решение должно быть через NODE_PATH или ПУТЬ, как объяснили другие пользователи.

Это только для того, чтобы отметить, что эта проблема возникает, только если узел был установлен другим пользователем (или если во время установки опция Добавить в PATH> npm modules не была отмечена).

1
Gregorio

Я наткнулся на этот вопрос, потому что я хочу использовать node.js с Visual Studio 2015 на моем новом компьютере с Windows 10. Я использовал node.js на Windows 7 и 8 и 8.1. Никогда не было проблем с node.js при поиске модуля. Я использую устаревший node.js 0.10.39, потому что я должен использовать эту версию из-за серийного и RFXCOM модуля.

Ответ для windows 10 - установить NODE_PATH в переменных окружения с помощью C:\Users\User\node_modules.

1
wetlip

Для Windows 10 мне пришлось локально установить gulp в папку:

C:\Users\MyAccount\AppData\Roaming\НПМ\node_modules

npm install gulp

Это исправило мою проблему "глоток не распознан"

1
Bizz Websites

В качестве альтернативы вы можете добавить к ~/.npmrc right prefix . У меня есть C:\Program Files\nodejs для 64 Win7.

1
dmi3y

Просто скачайте и переустановите узел из this , и это решит все проблемы с путями. 

Не забудьте перезапустить командную строку или терминал.

0
Mahendra