Глобальные модули Node не установлены правильно. Команда не найдена
У меня возникла проблема с установкой глобальных модулей node, и все, что я нашел в Интернете, говорит, что решение просто добавляет -g. Это не проблема. Я считаю, что это проблема связи или неправильная проблема с каталогом.
Вот что я делаю:
$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly
$ express myapp
bash: express: command not found
Однако, когда я запускаю прямую ссылку для выражения, она работает:
$ /usr/local/share/npm/bin/express myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
... Builds app correctly
Где модуль:
$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express
В моем .bash_profile у меня есть:
export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node
Нужно ли мне изменить среду node для загрузки в правильную папку? Правильно ли что-то не связано? Я потерян.
Спасибо!
Другие характеристики:
$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
Ответы
Ответ 1
Добавьте /usr/local/share/npm/bin
к вашему PATH
(например, в .bashrc
).
Для получения дополнительной информации см. npm help npm
:
глобальный режим: npm устанавливает пакеты в префикс установки в префикс /lib/ node_modules, а ящики устанавливаются в префикс /bin.
Префикс установки можно найти с помощью npm get prefix
или npm config list | grep prefix
.
Ответ 2
Это может означать, что ваш префикс установки node не тот, который вы ожидаете.
Вы можете установить его так:
npm config set prefix /usr/local
попробуйте запустить npm install -g
снова, и это должно сработать. Работал для меня на Mac, и решение приходит с этого сайта:
http://webbb.be/blog/command-not-found-node-npm/
EDIT: Обратите внимание, что я просто натолкнулся на это снова на новом Mac, который я настраивал, и должен был сделать процесс fooobar.com/questions/164950/....
Ответ 3
Я никогда не устанавливать какие - либо НПЕ вещи, через Суд! У меня есть свои причины, но я просто стараюсь держать вещи простыми и основанными на пользователя, поскольку это мир разработки пользователей, и не у всех есть доступ к корням, а root/sudo - установка таких вещей, как будто, кажется, загромождает вещи, чтобы начать с. В конце концов, все разработчики должны иметь возможность следовать этим инструкциям, а не только привилегированным пользователям sudo.
Эта конкретная система - это RHEL7, доступ к которой осуществляется через SSH:
Часто нужны разные версии узла, поэтому я использую NVM https://github.com/creationix/nvm
Таким образом, я могу показать вам рабочий пример для -g
глобальных установок, используя NVM, NPM и узловые пути, не используя root.
установите префикс для .npm-packages
если он еще не установлен. (обратите внимание, что это дефис, а не подчеркивание)
nvm config ls
prefix = "/home/<yourusername>/.npm-packages"
Затем отредактируйте свой файл ~/.bash_profile или.bashrc, если вы предпочитаете читать о том, почему и который здесь, со следующей информацией.
#PATH EXPORTS
NODE_MODULES=$HOME/.npm
NPM_PACKAGES=$HOME/.npm-packages/bin
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES
#NVM ENABLE
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Это в значительной степени охватывает все пути. Например, если вы устанавливаете gulp, как этот npm install -g gulp
он символизирует в ~/.npm-packages/bin
(обратите внимание, что дефис, а не подчеркивание). (нет необходимости в gulp-cli
или gulp-cl
)
Вы можете в значительной степени заменить/закомментировать все остальные пути пути узла. Вы можете поместить эту информацию о пути ниже любой другой информации о пути, которую у вас уже есть, безопасно, без перезаписи этого материала.
Ответ 4
В моем случае переменная среды NODE_PATH была пустой. Проверьте, является ли это empty-
echo $NODE_PATH
если NODE_PATH пуст. Затем измените ~/.bash_profile и добавьте NODE_PATH
nano ~/.bash_profile
export NODE_PATH='npm root -g'
source ~/.bash_profile
Теперь снова установите модули npm и проверьте, устанавливается ли он в npm root -g
Ответ 5
Мой npm также не смог найти глобальные пакеты. Я сделал то, что предложил Брэд Паркс:
npm config set prefix /usr/local
Затем я получил ошибку разрешений EACCES (НЕ ИСПОЛЬЗОВАТЬ sudo npm install -g <package>
) и исправил ее в официальных документах npm: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
- В командной строке в своем домашнем каталоге создайте каталог для глобальных установок:
mkdir ~/.npm-global
- Настройте npm для использования нового пути к каталогу:
npm config set prefix '~/.npm-global'
- В предпочитаемом вами текстовом редакторе откройте или создайте файл ~/.profile и добавьте следующую строку:
export PATH=~/.npm-global/bin:$PATH
- В командной строке обновите системные переменные:
source ~/.profile
- Затем установите пакет глобально и протестируйте его! Например:
npm install -g awsmobile-cli
awsmobile configure
Ответ 6
-
Добавьте следующую строку в ваш ~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
-
Загрузить профиль bash
bash -l
Ответ 7
У меня была проблема с двоичными файлами, потому что пользовательский .npmrc- файл в моем домашнем каталоге имел bin-links
установленные как false
, хотя по default is true
.
На всякий случай, это ваша проблема, проверьте, что ни один из ваших файлов.npmrc не установлен на false.
Затем повторная установка всех модулей создаст двоичные файлы в prefix
чтобы ваш PATH
мог их видеть.
Ответ 8
Шаги
Сначала удалите Node:
sudo rm -rf /usr/local/lib/node_modules/jitsu
npm cache clear
sudo npm install jitsu -g
Во-вторых, создайте .bash_rc:
vi ~/.bash_rc
Скопируйте следующие элементы и вставьте их в файл, открытый на шаге 2:
[[ -s ~/.bashrc ]] && source ~/.bashrc
export PATH=/usr/local/share/npm/bin:$PATH
Запустить джитсу. Запустите vi ~/.bash_profile, вот что вы увидите:
[[ -s ~/.bashrc ]] && source ~/.bashrc
export PATH=/usr/local/share/npm/bin:$PATH
# {{{
# Node Completion - Auto-generated, do not touch.
shopt -s progcomp
for f in $(command ls ~/.node-completion); do
f="$HOME/.node-completion/$f"
test -f "$f" && . "$f"
done
# }}}
Я нашел ответ для удаления Node из этой статьи:
JITSU НЕ ДОЛЖЕН УСТАНОВИТЬ OSX [ node 0.8.17 и NPM 1.2.0] WTF