Я веду себя более осторожно, чем обычно, потому что в прошлом меня смущало поведение 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
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
не установили глобальный npm
bin
путь к пути? Может быть, это так, но что-то zsh
делает, что-то портит. Где я могу это найти?
2) Стоит ли мне это делать? (Добавить :/usr/local/share/npm/bin
в экспортированный $PATH
внизу мой ~/.zshrc
)
Похоже, это неправильный способ сделать это, потому что, если я установлю что-то еще позже (используя Homebrew или что-то еще), мне нужно будет добавить его в свой сценарий запуска zsh, чтобы установить путь. Я предполагаю, что в данном конкретном случае это просто вопрос npm install -g
неправильных символических ссылок в «правильном» месте (например, /usr/local/bin
возможно).
Я думаю, что я буду вручную создавать внутри символические ссылки /usr/local/bin
для любых программ, с которыми у меня возникают проблемы, и этого должно быть достаточно для моих целей.
РЕДАКТИРОВАТЬ : Я обновляю это в 2019 году, потому что этот старый вопрос популярен, но теперь устарел как с точки зрения моего личного рабочего процесса, так и с точки зрения того, как лучше всего установить узел и управлять его различными зависимостями.
Мой личный рабочий процесс теперь заключается в использовании установщика, полученного с nodejs.org, для установки узла в системах. На самом деле я доверяю этому больше, чем самому пакету homebrew, потому что он лучше всех знает, как управлять файлами. Если вы хотите изменить свой системный узел с 8.10 на 10.15, будь то на Mac или Windows, просто загрузите установщик с nodejs.org для 10.15 для вашей ОС. По моему опыту, попытка обновить узел, установленный с помощью homebrew, всегда оказывалась более сложной задачей.
Кроме того, самое важное, что следует отметить, - это то, что использование sudo, как показано в приведенном выше примере установки jslint с помощью npm, крайне не рекомендуется; Я совершенно уверен, что пакеты homebrew никогда не должны устанавливаться или взаимодействовать с ними каким-либо образом с использованием суперпользователя. В этом нет необходимости, и это приведет к головной боли с разрешениями файлов!
Кроме того, я рекомендую ESLint вместо jslint и уже много лет не использую jslint.
Ответы:
Расширение вашего
PATH
с помощью:export PATH=/usr/local/share/npm/bin:$PATH
не страшная идея. Сказав это, вы не должны этого делать.
Запустите это:
По умолчанию в OS X установлено
/usr/local
, что означает, что npm будет выполнять символические ссылки на двоичные файлы/usr/local/bin
, которые уже должны быть у васPATH
(особенно если вы используете Homebrew).Так:
npm config set prefix /usr/local
если это что-то еще, иsudo
с npm! Согласно документации jslint , вы должны просто уметьnpm install
это делать .Если вы установили npm как sudo (
sudo brew install
), попробуйте переустановить его с помощью plain ol 'brew install
. Домашнее пиво должно помогать вам оставатьсяsudo
свободными.источник
npm
отказывается устанавливатьjslint
глобально.npm install -g jslint
терпит неудачу.Error: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
если я хочу, чтобы какие-либо скрипты записывали в него ссылки без необходимостиsudo
? Как насчет того, чтобы выполнить это, чтобы установить nom / node~/.local
или что-то в этом роде?root
в моем~/
каталоге (bysudo rm -r
ontmp/
и a.npm/
), и впоследствии отличноnpm install -g jslint
работал. Приятно то, что npm сама по себе является программой узла и для меня является своего рода доказательством концепции командной строки JS, которую я начинаю ценить сейчас, когда понимаю ее немного лучше.chown
-ing/usr/local
и все в нем - стандартная практика в OS X. См. Страницу устранения неполадок в вики Homebrew.chown
Инг из/usr/local
уже произошло на моей машине иначе иnpm
др бежать безsudo
не сможет внести ссылки на/usr/local/bin/
прПотратил некоторое время на эту проблему, и переключатель PATH не помог. Моя проблема заключалась в найденной здесь ошибке Homebrew / node / npm - https://github.com/npm/npm/issues/3794
Если вы уже установили узел с помощью Homebrew, попробуйте **** Обратите внимание на комментарии, что это может быть небезопасно. У меня это сработало, но могло иметь непредвиденные последствия. Также похоже, что последняя версия Homebrew правильно устанавливает npm. Так что, скорее всего , я хотел бы попробовать
brew update
,brew doctor
, иbrew upgrade node
т.д. , прежде чем пытаться ****:Или, если вы хотите установить узел с Homebrew и работать с npm, используйте:
brew install node --without-npm curl -L https://npmjs.org/install.sh | sh
источник
Я использую brew, и префикс уже был установлен:
Я заметил, что папка bin и lib принадлежала root, что предотвращало обычную установку без sudo, поэтому я вернул их пользователю
Затем я просто добавил путь к моему .bash_profile, который находится в / Users / [user]
PATH=$PATH:~/.node/bin
источник
brew не требует использования sudo даже при запуске npm с -g. На самом деле это может создать больше проблем в будущем.
Как правило, brew или port позволяют обновить ваш путь, чтобы не испортить ваши .zshrc, .bashrc, .cshrc или любой другой вариант оболочки, которую вы используете.
источник
sudo
. Я использовал sudonpm
(потому что что-то, что я прочитал, подсказало мне это). Мне любопытно, где посмотреть, как проложен путь. На самом деле кажется, чтоzsh
установщик запускает что-то, что в конечном итоге приводит к жесткому кодированию пути (во время установкиzsh
) в тот,.zshrc
который мне не очень нравится,npm
должно быть установлено в/usr/local
. Пространство/usr
имен path зарезервировано для официальных пакетов вашего дистрибутива./usr/local/bin
в вашем $ PATH или нет, это проблема zsh.Мне удалось исправить ошибку Vue Cli no command, выполнив следующие действия:
sudo nano ~/.bash_profile
для редактирования вашего профиля bash.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
иvue --version
т. Д.Я сделал это после того, как установил последнюю версию Vue Cli с https://cli.vuejs.org/
Обычно я использую пряжу, но я установил ее глобально с помощью npm
npm install -g @vue/cli
. Вы также можете использовать пряжу, если хотитеyarn global add @vue/cli
Примечание: возможно, вам придется сначала удалить его глобально, если он у вас уже установлен:
npm uninstall -g vue-cli
Надеюсь это поможет!
источник
У любого возникла проблема, связанная с конфликтом между brew и npm. Проверьте это решение https://gist.github.com/DanHerbert/9520689.
источник
Попробуйте запустить:
PATH=$PATH:~/npm/bin
а затем выполните тест, запустив его
express
в командной строке. Это сработало для меня.источник
~/.npm/bin
или что-то в этом роде. не должен бытьnpm
добавлен каталог в ваш домашний каталог.Если вы связали пакеты узлов с помощью команды sudo
Затем перейдите в папку, в которой глобально установлены node_modules.
В системах Unix они обычно размещаются в / usr / local / lib / node или / usr / local / lib / node_modules при глобальной установке. Если вы установите для переменной среды NODE_PATH этот путь, модули можно будет найти по узлам.
Windows XP -% USERPROFILE% \ Application Data \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules
а затем запустите команду
Это даст список всех глобальных node_modules, и вы легко сможете увидеть связанные модули node.
источник
sudo brew больше не является вариантом, поэтому, если вы установите с помощью brew на этом этапе, вы получите 2 действительно неприятные вещи: A: ему нравится устанавливать в
/usr/local/opts
/ usr / local / shared или в соответствии с ним. Сначала это не имеет большого значения, но у меня были проблемы с узлом PATH, особенно когда я установил lint. B: вы как бы застряли в командах sudo, пока не удалите и не установите их таким образом, или пока вы не получите стек из BitnamiЯ рекомендую этот метод вместо варианта стека, потому что он готов к работе, если у вас несколько проектов. Если вы используете готовый стек MEAN, вам нужно будет настроить виртуальные хосты в httpd.conf (больше проблем в этом стеке, чем в XAMPP), просто обновите ваши дополнительные / vhosts.conf и / etc / hosts для каждого дополнительного проект, если вы не хотите перенаправить и перезапустить сервер, когда вы закончите обновление.
источник
Простое решение ...
Просто введите команду ниже:
sudo npm config get prefix
если это не что-то вроде этого
/usr/local
, вам нужно исправить это, используя команду ниже.sudo npm config set prefix /usr/local
...Теперь на 100% работает нормально
источник