- Nodejs не может найти установленный модуль на Windows?
- 17 ответов:
- Global npm install location on windows?
- 4 Answers 4
- prefix Configuration
- Как задать глобально папку node_modules для всех новых Angular — приложений в Windows?
- 3 ответа 3
- Шпаргалка по пакетному менеджеру NPM
- Установка npm
- Обновление npm
- Поиск пакетов в npm
- Просмотр информации о пакете
- Локальная установка пакетов
- Установка пакета в наше приложение
- Понимание разницы между глобальной и локальной установкой
- Глобальная установка пакетов
- Удаление локально установленного пакета
- Удаление глобально установленного пакета
- Установка определённой версии пакета
- Установка модуля с Github
- Связи любых пакетов локально
- Связи локальных пакетов для нескольких приложений
- Отмена связи между пакетами приложения
- Отмена связи пакета в системе
- Создание нового пакета
- Добавление нового пользователя
- Публикация пакета в репозиторий npm
- Удаление пакета из репозитория npm
- Управление правами доступа к пакетам в репозитории npm
Nodejs не может найти установленный модуль на Windows?
Я изучаю nodejs в данный момент на Windows. Нескольких модулей, установленных во всем мире с НПМ.cmd и nodejs не удалось найти установленные модули. Возьмем, к примеру, нефрит,
Jade установлен в каталог «C:Program Files (x86)nodejsnode_modules» , но следующий код не будет «Cannot find module ‘jade'» ошибка
однако код будет успешно выполняться при локальной установке jade (без опции-g в npm). Я не хочу использовать локально установленные модули, это пустая трата времени дисковое пространство для меня, может ли кто-нибудь помочь мне заставить глобально установленные модули работать в Windows?
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+ — это просто запустить:
стоит отметить, что NODE_PATH используется только при импорте модулей в узле приложения. Если вы хотите использовать двоичные файлы глобально установленных модулей в своем CLI, вам нужно добавить его также в свой PATH , а не node_modules часть (например, %AppData%\npm в Windows 7/8/10).
Я в значительной степени новичок в узле.js себя, так что я могу быть не совсем прав, но из моего опыта это работает следующим образом:
- — g это не способ установки глобальных библиотек, это только способ их размещения системный путь, чтобы вы могли вызывать их из командной строки, не записывая полный путь к ним. Это полезно, например, тогда приложение node преобразует локальные файлы, например меньше — если вы установите его глобально, вы можете использовать его в любом каталоге.
- узел.сам 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, вам нужно добавить это в свой глобальный переменный путь:
важно: только это без node_modules часть, мне потребовалось полчаса, чтобы увидеть это.
для того, чтобы заставить его работать на windows 10 я решил его, добавив папку %USERPROFILE%\AppData\Roaming\npm на мой путь. Имея \node_modules добавлен такой: %USERPROFILE%\AppData\Roaming\npm\node_modules\ не работает для меня.
Я просто процитирую из этого узла блоге.
- если вы устанавливаете что-то, что вы хотите использовать в своей программе, используя require(‘whatever’), затем установите его локально, в корне ваш проект.
- если вы устанавливаете что-то, что вы хотите использовать в своей оболочке, в командной строке или что-то еще, установите его глобально, чтобы его двоичные файлы в конечном итоге на вашем пути переменная окружения.
конечно, есть некоторые случаи, когда вы хотите сделать оба. Coffee-script и Express оба являются хорошими примерами приложений, которые имеют интерфейс командной строки, а также библиотека. В этих случаях вы можете выполните одно из следующих действий:
- установить его в обоих местах. Серьезно, у тебя так мало места на диске? Все нормально, правда. Это крошечные программы на JavaScript.
- установить его в глобальном масштабе, а затем npm link coffee-script или npm link express (если вы находитесь на платформе, которая поддерживает символические ссылки.) Затем вам нужно только обновить глобальную копию, чтобы обновить все символические ссылки как что ж.
чтобы сделать его коротким, использовать npm link jade в свой каталог приложений.
попытался добавить / изменить переменные среды и пришел к выводу, что:
- изменить/добавить User variables (из верхнего ящика) вместо System variables (из нижней части); в противном случае вам нужно «запустить от имени администратора», чтобы заставить его работать.
- добавить ;%AppData%\npm до Path для того, чтобы использовать его в качестве инструмента командной строки (если поддерживается, как jshint и grunt-cli ).
- создать NODE_PATH и установить его в %AppData%\npm\node_modules для того чтобы require(‘
‘) в скриптах без установки его в проект справочник. (Но 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, работает
как администратор при входе в систему как обычный пользователь.
устранение: при выполнении той же установки, что и обычный пользователь (не «Запуск от имени администратора» для 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 .
один простой справочный модуль решения в приложении по полному пути:
для 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 в папку:
это исправило мою проблему «глоток не распознается»
у меня была та же проблема, пытаясь установить bower с npm install -g bower
Я думаю, это было потому, что узел был установлен другой пользователь!—6—>, а не мне.
Я удалил узел, а затем переустановил его. Во время установки я видел этот текст для опции добавить в путь > модули npm:
сообщение в узле установки
после установки узла, я выполнил npm install -g bower снова. И теперь Бауэр работает.
конечно, не нужно переустановить узел с собственным пользователем, как я. Решение должно быть через NODE_PATH или путь переменные, как объяснили другие пользователи.
это только для того, чтобы отметить, что эта проблема возникает только в том случае, если узел был установлен другим пользователем (или если во время установки опция добавить в путь > модули npm не было отмечено).
просто загрузите и переустановите узел из этой и это исправит все проблемы пути.
Не забудьте перезапустить командную строку или терминал.
Если вы используете Windows , это займет несколько шагов , 1) создайте файл с именем package.json
где hello-это имя пакета и * означает последнюю версию вашей зависимости
2) код каталог проекта и выполните следующую команду
Global npm install location on windows?
I’m not 100% sure, but I believe I installed node v5 from the windows installer on both my home and office PCs.
On my home PC global installs happen under %APPDATA%:
while on my office PC, they go under program files:
I need to provide the full path to a number of these global tools to PyCharm’s file watcher, and since the project file i shared it would make sense to not have global resources under a user folder.
Why would the global installs end up in different folders, and how can I force them to a location that is common to all team members?
4 Answers 4
- Local install (default): puts stuff in ./node_modules of the current package root.
- Global install (with -g): puts stuff in /usr/local or wherever node is installed.
- Install it locally if you’re going to require() it.
- Install it globally if you’re going to run it on the command line. -> If you need both, then install it in both places, or use npm link.
prefix Configuration
The prefix config defaults to the location where node is installed. On most systems, this is /usr/local . On windows, this is the exact location of the node.exe binary.
The docs might be a little outdated, but they explain why global installs can end up in different directories:
Based on the other answers, it may seem like the override is now the default location on Windows, and that I may have installed my office version prior to this override being implemented.
This also suggests a solution for getting all team members to have globals stored in the same absolute path relative to their PC, i.e. (run as Administrator):
open a new cmd.exe window and reinstall all global packages.
Explanation (by lineno.):
- Create a folder in a sensible location to hold the globals (Microsoft is adamant that you shouldn’t write to ProgramFiles, so %PROGRAMDATA% seems like the next logical place.
- The directory needs to be on the path, so use setx .. /M to set the system path (under HKEY_LOCAL_MACHINE). This is what requires you to run this in a shell with administrator permissions.
- Tell npm to use this new path. (Note: folder isn’t visible in %PATH% in this shell, so you must open a new window).
Как задать глобально папку node_modules для всех новых Angular — приложений в Windows?
Начинаю пробовать Angular . При создании нового Angular — приложения с помощью команды ng new app-name создается новая папка, внутри которой лежит еще одна папка node_modules . Сама команда ng new достаточно долго выполняется. Я подозреваю, что это связано с загрузкой всех модулей в node_modules.
Как можно загрузить node_modules один раз в какую-нибудь папку (условно, D:\node_modules ) и при создании нового проекта ангуляр подтягивать все модули из этой папки? А то постоянно грузить 200+ МБ из интернета при каждом создании приложения — такое себе. Также хотелось бы узнать, есть ли команда, которая позволяет обновлять эти модули.
И общий вопрос: нужно ли так вообще делать?
3 ответа 3
Установка
ng new project -skipInstall=true — не будет устанавливать пакеты с packege.json . После того, как проект создасться вы можете отредактировать файл packege.json , после чего запустить npm install — установяться все пакеты с файла packege.json . Если хотите установить пакеты глобально, то используйте команду npm install -g ; либо вы можете указать папку, куда ставить так — npm install
Обновление пакетов
npm update имя_пакета — обновляет определенный пакет
npm update —save — обновит все пакеты, однако на те версии, которые допустимы в package.json.
Чтобы поставить самые новые версии нужно вызвать npm install
Так npm root -g можно посмотреть глобальный каталог, куда ставятся пакеты
На счет стоит-ли хранить пакеты глобально — однозначного ответа не дам. Некоторые пакеты стоит, например Angular/cli , а такие пакеты, как bootstrap или DataTable — стоит хранить локально (т к в разных проектах могут быть разные версии).
Шпаргалка по пакетному менеджеру NPM
Установка npm
Обновление npm
Есть несколько способов чтобы обновить npm. Я предпочитаю:
Поиск пакетов в npm
Подсказка: Можно также использовать search.npmjs.org
Вторая подсказка: Для поиска необходимо знать имя нужного пакета (всё прекрасно ищет по любому слову как в имени пакета, так и в его описании, может неправильно перевёл?)
Просмотр информации о пакете
Локальная установка пакетов
Для демонстрации возьмём пакет http-server.
http-server is a package we’ve written which provides an easy to use wrapper around node’s core http.Server class. This module makes for a good example, since it’s API provides both a CLI binary and a requirable node.js module.
http-server — пакет, который мы написали, предоставляет более простой интерфейс в использовании базового модуля http.Server из node.js. Этот модуль хороший пример использования API как для бинарного CLI, так и для подключаемого модуля node.js.
Так мы установим http-server в нашей рабочей директории.
Вы увидите новую папку в node_modules. Сейчас можете не обращать на это внимание.
Установка пакета в наше приложение
test.js
Обратите внимание, как мы делаем: require(‘http-server’)? Что это за магия? (автор молодец)
http-server не является базовым модулем node.js. Этот пакет мы только что установили из npm. Node.js и npm взаимодействуют и автоматически подключают наши локальные модули из node_modules директории.
Понимание разницы между глобальной и локальной установкой
test.js
теперь запустим наш скрипт
мы получим эту ошибку:
Это вполне логично, мы установили http-server локально в «/mynewapp/», а не в «/anotherapp/».
Есть два решения в этой ситуации:
а) Установить ещё раз пакет, но локально в наше новое приложение
б) Установить пакет глобально
Глобальная установка пакетов
Если вы хотите чтобы пакет был доступен всем приложениям, его нужно установить глобально:
Флаг -g означает, что http-server должен быть установлен глобально и быть доступными для всех приложений.
Теперь мы можем вызывать его require(‘http-server’) в любом нашем приложении.
Кроме того, поскольку http-server пакет имеет свой исполняемый файл, то этот файл также будет установлен как исполняемый http-server и доступен в командах.
Теперь вы можете просто запустить команду:
Удаление локально установленного пакета
Удаление глобально установленного пакета
Установка определённой версии пакета
Установка модуля с Github
Важно. В некоторых случаях будут патчи, форки или ветви, которые вы хотите использовать, но которые еще не были опубликованы в npm. К счастью исходные коды для большинства npm модулей также доступна на www.github.com
Теперь наша клонированная версия http-server связана локально.
Связи любых пакетов локально
Если у вас есть отдельный каталог содержащий пакет npm, то можно создать локальную связь для него. Это удобно в ситуациях, когда мы не хотим опубликовать наш пакет в хранилище npm.
На нашу локальную версию http-server создана «связана» для нашей локальной машины. (связь создаётся как «copy-paste», с начало нужно перейти в нужный катало и сделать «copy», потом перейти в нужный каталог и сделать «paste». Так вот сейчас мы изучили как делается «copy», а ниже будет про «paste» этого модуля)
Связи локальных пакетов для нескольких приложений
Как мы видели ранее npm устанавливает пакеты в локальный каталог по умолчанию. Так вот npm ссылка(связь) работает почти так же.
Мы указываем, что теперь создали связь из http-server в наше новое приложение newapp. Если бы мы не выполнили npm link http-server, то получили бы ошибку об отсутствующем модуле. (а вот наш и «paste» о чём я писал выше, теперь вам должна быть понятна логика создания связей)
Отмена связи между пакетами приложения
(здесь мы просто отменяем наш «paste» для этого приложения)
Отмена связи пакета в системе
(здесь мы отменяем наш «copy» для этого пакета)
Создание нового пакета
(от себя хочу лишь заметить, что создание пакета не такая простая задача в одну команду, подробнее можно почитать в другой статье)
Добавление нового пользователя
Публикация пакета в репозиторий npm
Удаление пакета из репозитория npm
Управление правами доступа к пакетам в репозитории npm
Вы можете задать права доступа других пользователей к опубликованному пакету: