Команда не знайдена після встановлення npm у zsh


81

У мене виникають проблеми з установкою обітниць через npm у zsh. Ось що я отримую. Я спробував встановити його з опцією -g та без неї. Ти уявляєш, що тут не так?

[❤  ~/Desktop/sauce-node-demo:master] npm install -g vows
npm http GET https://registry.npmjs.org/vows
npm http 304 https://registry.npmjs.org/vows
npm http GET https://registry.npmjs.org/eyes
npm http GET https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/eyes
npm http 304 https://registry.npmjs.org/diff
/usr/local/share/npm/bin/vows -> /usr/local/share/npm/lib/node_modules/vows/bin/vows
vows@0.6.4 /usr/local/share/npm/lib/node_modules/vows
├── eyes@0.1.8
└── diff@1.0.3
[❤  ~/Desktop/sauce-node-demo:master] vows
zsh: command not found: vows

Дякую


Ви пробували оновити кеш шляху оболонки за допомогою перепрошивки?
Brian Agnew

все ще нічого після цього = /
optikfluffel

Відповіді:


80

Якщо ви встановили Node.js за допомогою Homebrew, бінарні файли npm можна знайти в /usr/local/share/npm/bin. Ви повинні переконатися, що цей каталог знаходиться у вашій змінній середовища PATH. Отже, у вашому ~/.zshrcфайлі додайте export PATH=/usr/local/share/npm/bin:$PATH.


21
На mac я додав export PATH="$HOME/.npm-packages/bin:$PATH"до свого ~/.zshrc.
Dan Sandland,

$ HOME / .npm-global / bin працював у мене з npm v6.9.0
Кевін Гук,

Що робити, якщо ви не встановили Node.js через Homebrew або ви не пам’ятаєте? А як ви знайдете 'usr / local / share / npm / bin'?
user70848

150

додати source /home/YOUUSERNAME/.bash_profileна початку~/.zshrc

І всі відсутні команди будуть виявлені.

Для користувачів Mac : додайтеsource /Users/YOUUSERNAME/.bash_profile


7
Для мене мені довелося взяти джерело ~ / .bashrc
Рояліст

4
Я використовую WSL у Windows 10, і мені довелося додати `source /home/USERNAME/.profile ', щоб змусити його працювати, але це спрацювало як шарм
Лука

1
Мені довелося шукати .bashrc замість bash_profile. Коли я отримав bash_profile, я отримав
купу

1
Моя папка користувача в Mac OS Catalina цього не містить .bash_profile. Я не можу знайти його за допомогою пошуку. Після оновлення .zshrcфайлу та повторного відкриття терміналу вийшов його перший рядок no such file or directory: /Users/m...i/.bash_profile. Це може бути надзвичайною зміною Каталіни?
MQoder

Це також працює для користувачів Mac: source /Users/$USER/.bash_profileабо, можливо, навіть простішеsource $HOME/.bash_profile
Glenn85

18

Для користувачів Mac :

Поряд із наступним: nvm, iterm2, zsh

Я виявив, що використовую, .bashrcа не .profileчи .bash_profileвикликав набагато менше проблем.

Просто додавши останнє до мого .zshrcфайлу:

source $HOME/.bashrc

2
Мені довелося скористатися, source $HOME/.bash_profileале це, безумовно, найкраща відповідь. Я насправді вже мав sdkman і вузол, налаштований нормально для bash. Я додав вузлові модулі до шляху, але продовжував отримувати "відмову в дозволі". Це вирішує цю проблему! Назад до кодування!
Брукс Дюбуа

12

На Ubuntu , після встановлення ZSH , і попередньо на bashтерміналі встановленого Node або інших пакетів,

Перше відкриття:

nano .zshrc

І розкоментуйте другий рядок:

export PATH=$HOME/bin:/usr/local/bin:$PATH

Це працює для мене, без написання жодного рядка, і я думаю, що ця опція доступна і на Mac .


Але це не працює для мене. І навіть якщо я додаю джерело $ HOME / bin у своєму .zshrc, це не працює. Я отримую деякий вивід у підказці оболонки кожного разу, коли його відкриваю.
Анімеш Кумар

12

Користувачі Mac лише за
умови, що ви встановили nvm раніше і npm правильно
(покрокове керівництво нижче про те, як його встановити:
встановіть nvm для користувачів Mac ).

тобі потрібно:

Знайдіть файл .zshrc:

  • Відкрити термінал.
  • Введіть, open ~щоб отримати доступ до домашнього каталогу.
  • Натисніть, Cmd + Shift + .щоб показати приховані файли у Finder.
  • Знайдіть .zshrc .

Відредагуйте файл .zshrc:

  • add: source /Users/_user_Name_/.bash_profileу верхній частині файлу (де _user_Name_ означає вашого користувача.

  • Збережіть файл і закрийте вікно терміналу.


Незважаючи на те, що це може виглядати як хакерство, я вважаю, що це хороший спосіб перенести всі мої попередньо встановлені речі з bash на zsh після оновлення Catalina.
Максим Васильович Павлов

Це для мене відповідь, оскільки просто запуск source /Users/_user_Name_/.bash_profileтривав лише протягом всього поточного сеансу.
Ніно Шкопак,

Щоб було зрозуміло, схоже, що «відкрити ~» відкриє нове вікно Finder, яке ви могли б просто відкрити нормально. І 'Cmd + Shift +.' - це перемикач для приховування / показу прихованих файлів. Я вважаю, що можливість переглядати приховані файли з Finder - це параметр, який потрібно налаштувати спочатку, тому, можливо, перехід через Термінал - це шлях. Але якщо це налаштування вже налаштовано, здається, не потрібно використовувати Terminal для відкриття Finder.
user70848

10

Якщо ви додали за допомогою nvm, будь ласка, додайте наступне у свій файл .zshrc і перезапустіть термінал, оскільки бінарні файли не виявляються оболонкою zsh, ми вказуємо шлях

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

8

для MacOS користувачів: розглянути можливість використання .profile замість з .bash_profile. Можливо, вам все одно доведеться вручну додати його до ~/.zshrc:

source $HOME/.profile

Зверніть увагу, що такого файлу за замовчуванням немає! Цитування slhck https://superuser.com/a/473103 :

У будь-якому випадку, ви можете просто створити файл, якщо він не існує, і відкрити його в текстовому редакторі.

touch ~/.profile
open -e !$

Додатковою цінністю є те, що людині добре, якщо він використовує один файл для налаштування середовища, незалежно від використовуваної оболонки. Завантажувати файл конфігурації bash у zsh було незручно.

Цитуючи прийняту відповідь Cos https://stackoverflow.com/a/415444/2445063

.profileце просто ім'я файлу сценарію Логін спочатку використовувався /bin/sh. bash, як правило, зворотно сумісний з /bin/sh, читатиме, .profileякщо такий існує

Після досліджень / думок Філіпа Екберга https://stackoverflow.com/a/415410/2445063

.profileє еквівалентом .bash_profileдля кореня. Я думаю, що назву змінено, щоб дозволити іншим оболонкам (csh, sh, tcsh) також використовувати її. (він вам не потрібен як користувач)

повертаючись до slhck, примітка уваги щодо bash :

(…) Як тільки ви створите файл із назвою ~/.bash_profile, його ~/.profileбільше не буде читати.


Щоб додати сюди мої 10 центів, не забудьте зробити це І повністю закрити термінал. Потім відкрийте його знову, і воно має спрацювати. Жодне з рішень не працювало для мене, перш ніж кинути все і відкрити знову. Ідеально!
filipe.costa01

1
Найкраща відповідь для мене, як для користувача Ubuntu. Мені просто потрібно було завантажити .profileфайл у свій .zshrcфайл. Просто додайте source ~/.profileна початку .zshrcфайлу та перезавантажте, і у вас все буде добре.
Кайоте,

7

На мою скромну думку, по-перше, ви повинні переконатися, що у вас встановлена ​​будь-яка версія Node. Для цього типу:

nvm ls

І якщо ви не отримали жодної версії, це означає, що я мав рацію :) Тоді вам слід набрати:

nvm install <node_version**>

** фактичну версію ви можете знайти на веб-сайті Node

Тоді у вас буде Node, і ви зможете використовувати команди npm


Дякую @daxtersky. Це саме те, що мені потрібно було.
Washington Soares Braga,

Це зробило це для мене теж. node --version відрізнявся від того, що nvm lsпісля запуску команди це тепер добре.
Неллес

6

Інша річ, яку слід спробувати, і для мене відповідь полягала в тому, щоб прокоментувати перший exportу~/.zshrc

# If you come from bash you might have to change your $PATH. export PATH=$HOME/bin:/usr/local/bin:$PATH


5

Для тих, хто все ще має проблеми. Не забудьте вийти та увійти ще раз.


це було рішення на Mac OS Catalina.
Девід Шуман,

Ви можете пояснити? де я можу увійти та вийти? боже, мій акаунт на facebook? мій акаунт в Instagram? мій твіттер?
noogui

ваш комп'ютер
оф

1

У моєму випадку я встановив вузол з NVM, і після встановлення z Shell команда node та nvm не працювала. Отже, те, що мені вдалося, було встановити nvm знову за допомогою цієї команди:

wget https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
sudo zsh install.sh

Вище команд знову встановили nvm, оскільки вузол вже був встановлений, він автоматично додав шлях до вузла у файл .zshrc і все запрацювало.


1

Для мене загальноприйнятий відповідь на додавання export PATH=/usr/local/share/npm/bin:$PATHдо .zshrcне працювати. Я спробував додати NVM_DIRтакож, що вирішило мою проблему.

  1. Спробуйте vi .bashrc
  2. Ви знайдете такий рядок, як наведено нижче. Скопіюйте його.

    export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

  3. Вставте скопійований вміст у .zshrcфайл

  4. Перезапустіть термінал

Сподіваюся, це вирішить вашу проблему.


Моя ситуація: 1. Я встановив Node через nvm, і все працювало. 2. Потім тим часом я перейшов з bashна zsh і вузол. припинив працювати. Тож наведена вище відповідь стала для мене виправленням.
razvang


0

Я думаю, що проблема полягає більше у завершенні ZSH.

Вам потрібно додати цей рядок у .zshrc:

zstyle ':completion:*' rehash true

Якщо у вас Oh-my-zsh, було зроблено PR, ви можете інтегрувати його, поки його не витягнуть: https://github.com/robbyrussell/oh-my-zsh/issues/3440


0

ДЛЯ MAC: Я спробував щось із вищезазначеного, але безрезультатно, нічого не зміг привести до роботи.

Я ВСТАНОВИТИ BROW, тому, хоча це не найкращий підхід, з zsh я зробив:

  1. sudo chown -R $ (whoami) / usr / local / share / man / man8 (для доступу до заварки)
  2. brew update && brew install npm (у мене був встановлений вузол)
  3. npm -v (для підтвердження встановлення)
  4. nano ~ / .zshrc (щоб очистити файлові зміни та зберегти)

Це спрацювало для мене. Сподіваюся, це комусь допомагає. №1 мене турбує, але я житиму поки що.


0

У моєму випадку проблема перевстановлення вузла. Будь-хто може встановити вузол через веб-сайт нижче.

https://nodejs.org/en/download/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.