префикс глобального пути npm

Я более осторожен, чем обычно, потому что меня смутило поведение npm в прошлом.

Я нахожусь на Mac и установил node.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 [email protected] /usr/local/share/npm/lib/node_modules/jslint └── [email protected] ([email protected]) 

впоследствии

 $ jslint ply.js zsh: command not found: jslint 

из-за /usr/local/share/npm/bin не находящегося в моей $PATH .

1) Почему brew не устанавливать глобальный путь npm bin к пути? Возможно, так и было, но что-то, что делает zsh , это испортить его. Где я могу это найти?
2) Должен ли я это делать? (Добавить :/usr/local/share/npm/bin в экспортированный $PATH в нижней части моего ~/.zshrc )

Похоже, что это неправильный способ сделать это, потому что, если я установлю что-то еще позже (используя Homebrew или что-то еще), мне нужно будет добавить его к моему сценарию запуска zsh, чтобы установить путь. Я предполагаю, что в этом конкретном случае это просто вопрос npm install -g не делая правильные символические ссылки в «правильном» месте (например, /usr/local/bin ).

Я думаю, что я буду делать вручную создавать символические ссылки внутри /usr/local/bin для любых программ, с которыми у меня возникают проблемы, и это должно быть достаточно хорошо для моих целей.

Расширение вашей PATH с помощью:

 export PATH=/usr/local/share/npm/bin:$PATH 

это не страшная идея. Сказав это, вы не должны этого делать.

Запустите это:

 npm config get prefix 

Значение по умолчанию для OS X – /usr/local , что означает, что npm будет билингвинировать символические ссылки в /usr/local/bin , которые должны быть уже на вашем PATH (особенно если вы используете Homebrew).

Так:

  1. npm config set prefix /usr/local если это что-то еще, и
  2. Не используйте sudo с npm! Согласно документам jslint , вы должны просто npm install .

Если вы установили npm в качестве sudo ( sudo brew install ), попробуйте переустановить его с простой brew install « brew install . Предполагается, что Homebrew поможет вам оставаться свободным.

Потратил время на эту проблему, и переключатель PATH не помогал. Моя проблема была найденной здесь ошибкой Homebrew / node / npm – https://github.com/npm/npm/issues/3794

Если вы уже установили узел с помощью Homebrew, попробуйте **** Обратите внимание на комментарии, что это может быть небезопасно. Это работало для меня, но могло иметь непреднамеренные последствия. Также кажется, что последняя версия Homebrew правильно устанавливает npm. Вероятно, я попробую brew update , brew doctor , brew upgrade node т. Д., Прежде чем попробовать ****:

 npm update -gf 

Или, если вы хотите установить узел с Homebrew и работать с npm, используйте:

 brew install node --without-npm curl -L https://npmjs.org/install.sh | sh 

Я использую пиво, и префикс уже установлен:

 $ npm config get prefix /Users/[user]/.node 

Я заметил, что папка bin и lib принадлежит root, что предотвращает обычную установку без sudo, поэтому я повторно использовал их для пользователя

 $ cd /Users/[user]/.node $ chown -R [user]:[group] lib $ chown -R [user]:[group] bin 

Затем я просто добавил путь к моему .bash_profile, который находится в / Users / [user]

 PATH=$PATH:~/.node/bin 

пиво не должно требовать от вас использования sudo даже при запуске npm с -g. Это могло бы создать больше проблем в будущем.

Как правило, варить или порт позволяет вам обновлять свой путь, чтобы он не рисковал испортить ваши .zshrc, .bashrc, .cshrc или любой другой вкус оболочки, которую вы используете.

У любого есть такая же проблема, связанная с конфликтом между варкой и npm. Проверьте это решение. https://gist.github.com/DanHerbert/9520689

Попробуйте запустить:

 PATH=$PATH:~/npm/bin 

а затем выполните тест, выполнив express в командной строке. Это сработало для меня.

Если вы связали пакеты узлов с помощью команды sudo

Затем перейдите в папку, где node_modules установлены глобально.

В системах Unix они обычно помещаются в / usr / local / lib / node или / usr / local / lib / node_modules при установке в глобальном масштабе. Если вы установите для этой переменной переменную среды NODE_PATH, то модули могут быть найдены узлом.

Windows XP -% USERPROFILE% \ Данные приложения \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules

а затем запустите команду

 ls -l 

Это даст список всех глобальных узлов node_modules, и вы можете легко увидеть модули связанных узлов.

sudo brew больше не является вариантом, поэтому, если вы установите с варевом в этот момент, вы получите 2 действительно неприятных вещи: A: ему нравится устанавливать в /usr/local/opts или в соответствии с этим, / usr / local / общий. Сначала это неважно, но у меня были проблемы с узлом PATH, особенно когда я установил lint. B: вы как бы застряли в командах sudo, пока не удалите и не установите его таким образом, или вы можете получить стек из Bitnami

Я рекомендую этот метод по опциям стека, потому что он готов к работе, если у вас несколько проектов. Если вы идете с готовым стеком MEAN, вам придется настраивать виртуальные хосты в httpd.conf (больше боли в этом стеке, чем XAMPP), чтобы обычное обновление вашего дополнительного / vhosts.conf и / etc / hosts для каждого дополнительного проект, если вы не захотите повторно и перезагрузите свой сервер, когда вы закончите обновлять вещи.

Interesting Posts
Давайте будем гением компьютера.