префикс глобального пути npm
Я более осторожен, чем обычно, потому что я был смущен поведением npm
в прошлом.
Я нахожусь на Mac и установил узел.js через brew install node
.
теперь, когда я хочу бежать jslint.js
в командной строке команду jslint
Я считаю, что канонический способ сделать это sudo npm install -g jslint
который успешно работал с этим выводом:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
впоследствии
$ jslint ply.js
zsh: command not found: jslint
из-за /usr/local/share/npm/bin
Не будучи в мой $PATH
.
1) Почему brew
не устанавливать global npm
bin
путь к пути? Может и так, но что-то zsh
не испортил. Где я могу быть в состоянии найти, что?
2) должен ли я это сделать? (Добавить :/usr/local/share/npm/bin
экспортированных $PATH
на ~/.zshrc
)
похоже, что это не правильный способ сделать это, потому что если я установлю что-то еще позже (используя Homebrew или что-то еще), мне нужно будет добавить его в свой сценарий запуска zsh чтобы установить путь. Я думаю, в данном конкретном случае это просто вопрос npm install -g
не делая правильные символические ссылки в "правильном" месте (например,/usr/local/bin
может быть).
Я думаю, что я буду делать, это вручную создавать символические ссылки внутри /usr/local/bin
для любых программ, с которыми у меня есть проблемы, и это должно быть достаточно хорошо для моих целей.
8 ответов:
расширение
PATH
С:export PATH=/usr/local/share/npm/bin:$PATH
это не ужасная идея. Сказав это, вы не должны этого делать.
выполнить это:
npm config get prefix
значение по умолчанию для OS X -
/usr/local
, что означает, что npm будет символически связывать двоичные файлы в/usr/local/bin
, который уже должен быть на вашемPATH
(особенно если вы используете доморощенного).так:
npm config set prefix /usr/local
если это что-то другое, и- не используйте
sudo
С НПМ! Согласно jslint документы, вы должны просто быть в состоянииnpm install
его.если вы установили npm как sudo (
sudo brew install
), попробуйте переустановить его с помощью простого ol'brew install
. Доморощенный должен помочь вам сохранитьsudo
-бесплатно.
потратил некоторое время на эту проблему, и переключатель пути не помогал. Моей проблемой была ошибка Homebrew / node/npm, найденная здесь -https://github.com/npm/npm/issues/3794
если вы уже установили узел с помощью Homebrew, попробуйте * * * * Примечание для комментариев, что это может быть небезопасно. Это сработало для меня, но могло иметь непредвиденные последствия. Также кажется, что последняя версия Homebrew правильно устанавливает npm. Так что скорее всего я бы попробовал
brew update
,brew doctor
,brew upgrade node
etc раньше попытка****:npm update -gf
или, если вы хотите установить узел с Homebrew и иметь работу npm, используйте:
brew install node --without-npm curl -L https://npmjs.org/install.sh | sh
Я использую brew, и префикс уже был установлен:
$ npm config get prefix /Users/[user]/.node
Я заметил, что папка bin и lib принадлежала root, что предотвратило обычную установку non sudo, поэтому я повторно владел ими пользователю
$ cd /Users/[user]/.node $ chown -R [user]:[group] lib $ chown -R [user]:[group] bin
тогда я просто добавил путь к моему .bash_profile который находится по адресу /Users / [user]
PATH=$PATH:~/.node/bin
brew не должен требовать, чтобы вы использовали sudo даже при запуске npm с-g. это может создать больше проблем в будущем.
Как правило, brew или порт позволяют обновить путь, чтобы он не рисковал испортить ваш .zshrc, .bashrc, .cshrc, или любой вкус оболочки вы используете.
любой из них получил ту же проблему, что и конфликт между brew и npm Пожалуйста, проверьте это решение https://gist.github.com/DanHerbert/9520689
попробуй:
PATH=$PATH:~/npm/bin
а затем сделать тест, запустив
express
в командной строке. Это сработало для меня.
Если вы связали пакеты узлов с помощью команды sudo
затем перейдите в папку, где node_modules устанавливаются глобально.
на UNIX-системах они обычно помещаются в /usr/местные/библиотека/узел или /usr/местные/библиотека lib/node_modules, в случае, когда установлен во всем мире. Если вы установите переменную среды NODE_PATH на этот путь, модули можно найти по узлу.
Windows XP - %USERPROFILE%\Application Data\npm\node_modules Windows 7 - %AppData%\npm\node_modules
а затем выполните команду
ls -l
Это даст список всех глобальных node_modules, и вы можете легко увидеть связанные модули узлов.
sudo brew больше не является опцией, поэтому, если вы установите с brew в этот момент, Вы получите 2 действительно неприятных вещи: A: он любит устанавливать в
/usr/local/opts
или согласно этому, /usr / local / shared. Сначала это не так уж и важно, но у меня были проблемы с Node PATH, особенно когда я установил lint. B: вы как бы застряли с командами sudo, пока вы не удалите и не установите его таким образом, или вы можете получить стек из обЯ рекомендую этот метод над опцией стека, потому что он готов к работе, если у вас есть несколько проектов. Если вы идете с готовым стеком MEAN, вам придется настроить виртуальные хосты в httpd.conf (больше боли в этом стеке, чем XAMPP)plust обычное обновление ваших дополнительных/vhosts.conf и / etc / hosts для каждого дополнительного проекта, если вы не хотите переустанавливать и перезапускать свой сервер, когда вы закончите обновление.