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

  1. -g - это не способ установки глобальных библиотек, а только способ размещения их по системному пути, чтобы вы могли вызывать их из командной строки, не записывая полный путь к ним. Это полезно, например, тогда, когда приложение узла конвертирует локальные файлы, например, меньше - если вы устанавливаете его глобально, вы можете использовать его в любом каталоге.
  2. Сам узел .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

Он устанавливает зависимости