Nodejs не может найти установленный модуль в Windows?

175

Я изучаю 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?

  • 0
    stackoverflow.com/questions/15471965/...
  • 2
    @AmolMKulkarni: не уверен, насколько это актуально здесь. Добавление «.js» к требованию не решает проблему в Windows.
Показать ещё 3 комментария
Теги:
module
npm
require

17 ответов

249
Лучший ответ

Добавьте переменную среды с именем 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.js, поэтому я могу быть не совсем прав, но по своему опыту он работает следующим образом:

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

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

  • 17
    Большое спасибо, ссылки, которые вы предоставили, очень полезны, теперь я стал более понятным, хотя алгоритм поиска модулей выглядит немного сложнее. Наконец, я использую переменную среды NODE_PATH для ссылки на глобальный путь к модулю, set NODE_PATH=C:\Documents and Settings\DevUser\Application Data\npm\node_modules , и она работает как положено. Странно, что глобально установленные модули расположены в «% USERPROFILE% \ Application Data \ npm \ node_modules» в Windows, в то же время в NODE_PATH не должно быть кавычек.
  • 2
    Рад помочь. Разве изменение NODE_PATH не нарушило пути к стандартным модулям node.js, таким как FS?
Показать ещё 8 комментариев
28

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

  • 7
    это в appdata \ роуминге на Windows 8, а также
  • 5
    % AppData% содержит этот путь ..
Показать ещё 3 комментария
19

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

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

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

  • 3
    В качестве альтернативы для пользователей Windows 8% USERPROFILE% \ AppData \ Roaming \ npm
  • 4
    Спасибо за совет по удалению части node_modules , тоже с этим боролся!
12

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

  • 0
    это работает..
  • 7
    Или, проще говоря, `% AppData% \ npm`
Показать ещё 3 комментария
12

Я просто напишу из этого сообщения node

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

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

...

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

  • Установите его в обоих местах. Серьезно, это вы на коротком диске на диске? На самом деле это прекрасно. Theyre крошечные программы JavaScript.
  • Установите его по всему миру, а затем npm напишите кофе - script или npm link express (если вы на платформе, поддерживающей символические ссылки). Затем вам необходимо обновить глобальную копию, чтобы обновить все символические ссылки, как хорошо.
  • 0
    Спасибо, Соемарко, это мне тоже помогает
  • 6
    They're tiny JavaScript programs. Некоторые из этих библиотек, конечно, не крошечные!
Показать ещё 1 комментарий
9

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

  • 4
    Кажется, что npm link jade не может работать в Windows, npm возвращает сообщение об ошибке следующим образом: npm ERR! Error: npm link not supported on windows
  • 1
    Теперь, как и в версии v0.8.9
Показать ещё 1 комментарий
8

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

  • Изменить/добавить 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
5

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

npm install -g gulp

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

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

  • 1
    Чтобы пояснить этот момент немного подробнее ... Когда Node установлен как администратор, он обновляет системный путь, чтобы включить ссылку на папку модуля администратора глобального узла. Когда новый пользователь устанавливает что-то глобально, он устанавливает его в другую папку модуля узла. Каждый пользователь, кроме пользователя, который установил Node, должен будет обновить свой путь, чтобы включить в него папку модуля глобального узла. Если вы устанавливаете и используете узел на одной и той же учетной записи, в этом нет необходимости.
  • 0
    Windows 8.1 pro с nodejs v6.9.4, чтобы установить путь: C: \ Program Files \ nodejs \ nodevars.bat
4

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

Я запускаю Windows 10.

  • 0
    это единственное, что сработало для меня. работает на Windows 8
3

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

3

Из моего опыта с 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");
1

Я наткнулся на этот вопрос, потому что я хочу использовать 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.

  • 1
    Э, нет (Windows 10 здесь ..) Я вижу некоторые модули в C:\Users\User\node_modules Я вижу некоторые модули в C:\Users\User\AppData\Roaming\npm\node_modules Я вижу некоторые модули в C:\Users\User\node_modules Также находится в C:\Program Files (x86)\nodejs\node_modules\npm\node_modules Не уверен, как это происходит. Что есть что, и почему они так поступили?
1

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

0

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

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

0

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

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

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

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

Изображение 4243

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

Несомненно, не нужно переустанавливать node с собственным пользователем, как я. Решение должно быть через переменные NODE_PATH или PATH, как объяснили другие пользователи.

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

0

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

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

npm install gulp

Это исправлено. Моя проблема "gulp не распознается"

-2

если вы используете окна, требуется несколько шагов, 1) создайте файл с именем package.json

 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}

где hello - это имя пакета, а * означает последнюю версию вашей зависимости

2) в каталог проекта и выполните следующую команду

npm install

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

  • 4
    Это не устанавливает его глобально (который задает вопрос). Это тянет зависимость в приложение
  • 0
    Я перепробовал все перечисленное выше, чтобы убедить мою установку node.js распознать глобально установленные модули, и ни один из них не работает. Даже после удаления и переустановки узла (v8.11.3 LTS), каждый раз, когда я пытаюсь выполнить команду require ("mongodb") в сценарии node.js, я получаю ЖЕ ОШИБКУ: «Не удается найти модуль mongodb». Тем не менее, если я выполню команду «npm ll -g mongodb», NPM сообщит, что модуль установлен. Может кто-нибудь ПОЖАЛУЙСТА поделится со мной информацией, которая работает с этой проблемой?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню