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



Я изучаю nodejs в данный момент на Windows. Нескольких модулей, установленных во всем мире с НПМ.cmd и nodejs не удалось найти установленные модули. Возьмем, к примеру, нефрит,



npm install jade -g


Jade установлен в каталог "C:Program Files (x86)nodejsnode_modules", но следующий код не будет "Cannot find module 'jade'" ошибка



var jade = require('jade');


однако код будет успешно выполняться при локальной установке jade (без опции-g в npm). Я не хочу использовать локально установленные модули, это пустая трата времени дисковое пространство для меня, может ли кто-нибудь помочь мне заставить глобально установленные модули работать в Windows?

2287   17  

17 ответов:

добавить переменную окружения с именем NODE_PATH и установить его в %USERPROFILE%\Application Data\npm\node_modules (Windows XP),%AppData%\npm\node_modules (Windows 7/8/10), или везде, где npm заканчивает установку модулей на вашем вкусе Windows. Чтобы сделать это раз и навсегда, добавьте это как системную переменную на вкладке Дополнительно диалогового окна Свойства системы (run 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 используется только при импорте модулей в узле приложения. Если вы хотите использовать двоичные файлы глобально установленных модулей в своем CLI, вам нужно добавить его также в свой PATH, а не node_modules часть (например,%AppData%\npm в Windows 7/8/10).


старая история

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

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

  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-бит, SP1), узел.js 4.2.4, npm 2.14.12
  • Win 8.1 (Ent. 64-разрядная), узел.js 0.10.30, npm 1.4.21

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

npm install -g gulp

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

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

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

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

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

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

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

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

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

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

C:\Users\myaccount\AppData\Roaming\npm\node_modules

npm install gulp

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

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

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

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

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

enter image description here

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

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

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

просто загрузите и переустановите узел из этой и это исправит все проблемы пути.

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

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

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

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

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

npm install

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

Comments

    Ничего не найдено.