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?

21 ответ

Решение

Добавьте переменную среды с именем 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, вы должны добавить их также в свой CLI. PATH, но без node_modules часть (например %AppData%\npm в Windows 7/8/10).


Старый рассказ

Я довольно плохо знаком с node.js, поэтому могу быть не совсем прав, но по своему опыту это работает так:

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

Чтобы сделать его коротким, используйте 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 такие как виста и новее.)

Тестовая среда:

  • 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

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

npm install -g gulp

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

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

У меня работал на Windows 10 npm config set prefix %AppData%\npm\node_modules

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

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

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

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

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

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

введите описание изображения здесь

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

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

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

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

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

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

npm install gulp

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

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

Мне пришлось добавить следующее к Pathпеременная под System variables. Установка переменной под User variableне работал для меня. Я использую виндовс 11.

%USERPROFILE%\AppData\Roaming\npm

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

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

я пыталсяpnpm prisma generateиnpm prisma generateи ни один из них не работал. Но затем я попробовал использовать команду npx, как показано ниже.

      npx prisma generate

И эта строка кода меня спасает, звучит немного странно, но, по крайней мере, в моем проекте она работает.

Все приведенные выше ответы не помогли мне. Единственное, что в итоге сработало, - это добавить%AppData%\npm в переменную Path среды И удалить два файла ng в C:\Program Files\nodejs.

Пакеты ng не были установлены в C:\Program Files\nodejs\node_modules, поэтому было очевидно, что использование двоичного файла ng из каталога nodejs не будет работать.

Я не уверен, почему он искал в этом каталоге, потому что я уже настроил - переменную среды PATH - .npmrc в C:\Users\MyUser - Пытался добавить системные переменные и / или NODE_PATH

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

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

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

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

установка npm

Устанавливает зависимости

Другие вопросы по тегам