Nie działa globalne polecenie włóczki

114

Pracuję z Yarn v0.16.1. Jeśli dobrze rozumiem (zgodnie z dokumentacją ), yarn global add <package>powinien być odpowiednikiem npm install -g <package>. Jednak kiedy uruchamiam przykład w docs (z create-react-app), polecenie działa pomyślnie, ale nie create-react-appjest wtedy dostępne z wiersza poleceń. Oto wynik:

$ yarn global add create-react-app
$ yarn global v0.16.1
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Installed create-react-app@0.6.0 with binaries:
  - create-react-app
✨  Done in 3.22s.
$ create-react-app --help
-bash: create-react-app: command not found

Wykonanie globalnej instalacji za pomocą npm daje oczekiwany rezultat i wszystko działa. Czego brakuje mi z włóczką?

jaredsk
źródło

Odpowiedzi:

179

Powinieneś dodać export PATH="$PATH:$(yarn global bin)"do swojego ~/.bash_profilelub czegokolwiek, czego używasz. To rozwiązałoby problem.

W zależności od tego, jak go zainstalowałeś, globalny folder Yarn różni się z jakiegoś powodu. Możesz śledzić ten problem tutaj.

Kwarc
źródło
6
Należy również zaopatrywać się w „bash_profile” plik po to został stworzony, aby zaktualizować zmiany w powłoce bash: source ~/.bash_profile.
tfmontague
1
W niektórych systemach może być konieczne yarn global binsamodzielne uruchomienie i użycie dosłownego adresu URL ~/.bash_profilezamiast podpowłoki, na przykład:export PATH="$PATH:/usr/local/bin"
Nathan Arthur,
Musiałem się kierować radą zawartą w tym komentarzu w kwestii wskazanej w odpowiedzi. I got global bins working by altering my path from what the docs say in the alternative installation section from export PATH="$PATH:$HOME/.yarn/bin" to export PATH="$PATH:$HOME/.yarn/bin:$HOME/.yarn-config/global/node_modules/.bin" github.com/yarnpkg/yarn/issues/1321#issuecomment-255532028
cirovladimir
1
Użytkownicy Ubuntu, którzy napotkali ten problem, export PATH="$PATH:$HOME/.config/yarn/global/node_modules/.bin"powinni dodać do swojego ~ / .bash_profile
Pitt.
2
dla zsh, po prostu włóż .zshrc
Shad
48

Aktualizacja z grudnia 2018 r

Samo zaktualizowanie ścieżki nie zadziałało. Musiałem też ustawić prefiks przędzy.

  • Ubuntu 18.04.1 LTS (bioniczny)
  • przędza 1.12.3
  • npm 3.5.2
  • node v8.10.0
  • zsh 5.4.2

Kroki

  1. Potwierdź swoją globalną ścieżkę pojemnika

    yarn global bin
    

Mam: /home/username/.yarn/bin

  1. ustaw prefiks przędzy:

    upewnij się, że przedrostek przędzy jest katalogiem nadrzędnym katalogu bin. Możesz potwierdzić, uruchamiając

    yarn config get prefix
    

    kiedy to uruchomiłem, mój prefiks był pusty, więc ustawiłem go:

    yarn config set prefix ~/.yarn
    
  2. dodaj następujący kod do ~ / .bash_profile lub ~ / .bashrc

    export PATH="$PATH:`yarn global bin`"
    

    dla użytkowników zsh, pamiętaj, aby dodać tę linię do ~ / .zshrc

  3. uruchom ponownie powłokę lub uruchom nową

    bash -l lub zsh

AndrewD
źródło
Dzięki, działa idealnie! Testowane na Ubuntu 18.04 na WSL
robe007
3

W moim przypadku yarn global binnie działało.

Spróbuj, brew reinstall yarnjeśli tak właśnie zainstalowałeśyarn

👍🏻

Antoine
źródło
2

Aby ponownie zainstalować, uruchom poniżej.

brew install -g yarn

// Uwaga: (aktualizacja homebrew) dla użytkowników komputerów Mac.

brew reinstall yarn

// (jeśli nadal nie znaleziono przędzy)

heyfranksmile
źródło
2

W Ubuntu naprawiłem, instalując pakiet w następujący sposób:

sudo yarn global add <package> --prefix /usr/local
Flo
źródło
2

Wpadłem na ten problem, ale w systemie Windows. Wszystko, co musiałem zrobić, to dodać globalny bin przędzy do zmiennej PATH.

setx path "%path%;c:\users\YOURUSERNAME\appdata\local\yarn\bin"

Pamiętaj, aby zmienić NAZWĘ UŻYTKOWNIKA na nazwę użytkownika swojego konta.

Możesz sprawdzić, gdzie znajduje się Twój globalny pojemnik, uruchamiając

yarn global bin

I nie zapomnij ponownie uruchomić okna CMD, nad którym pracujesz. Miłego kodowania!

Thapedict
źródło
1
Rozwiązałem mój problem w systemie Windows 10 po uruchomieniu „yarn global add vuepress” i utworzeniu polecenia „przeczytaj mnie”, wcześniej nie można było znaleźć polecenia „vuepress dev”.
Boz
1

Oto proces, którego użyłem w systemie Mac OSX El Capitan.

  1. Spróbuj zainstalować przędzę (użyłem polecenia Curl), jeśli już ją masz. Spowoduje to wyświetlenie, jeśli jest już zainstalowany i poda bieżący katalog, w którym istnieje.

Lubię to:

curl -o- -L https://yarnpkg.com/install.sh | bash

Wyświetli coś takiego:

Installing Yarn!
> /Users/{Your Username}/.yarn already exists, possibly from a past Yarn install.
> Remove it (rm -rf /Users/{Your Username}/.yarn) and run this script again.

Nie usuwaj go. Przejdź do kroku 2.

  1. Skopiuj katalog wymieniony powyżej. Otwórz swój profil. Używam zsh. Więc mój był ~/.zshrc. Możesz znaleźć swoje i więcej informacji tutaj .

  2. Skopiuj poniższe elementy (w razie potrzeby zastępując dane katalogu i nazwy użytkownika, te, które otrzymałeś w komunikacie o błędzie instalacji).

    alias yarn="/Users/{Your Username}/.yarn/bin/yarn"

  1. Spróbuj biec, yarn versionaby sprawdzić, czy działa. Jeśli tak, w terminalu powinien pojawić się numer wersji.

To wszystko i co mi pomogło.

Tapha
źródło
1

AndrewD dał świetną odpowiedź, ale dla tych na Windowsie jest trochę inaczej, szczególnie krok 3.

Nie używaj polecenia, setxjak powiedział @Thapedict. Spowoduje to usunięcie wszystkich poprzednich ścieżek i zastąpienie go tylko podanym katalogiem. Jeśli chcesz użyć setx, myślę, że może istnieć flaga, która sprawi, że będzie dołączać istniejące zmienne ścieżki, ale nie wiem, która z nich. Używanie tylko setx nie będzie do niego dołączane.

Po prostu zrobiłbym Właściwości systemu> Zaawansowane> Zmienne środowiskowe> Edytuj ścieżkę> Nowy> c: \ users \ YOURUSERNAME \ appdata \ local \ yarn \ bin

aby upewnić się, że nie usuniesz poprzednich zmiennych.

Luddebror
źródło
0

Przy przełączaniu z bash na zsh wyskoczył mi ten sam błąd, u mnie zadziałało:

in your .zshrc 

# NVM Stuff
export NVM_DIR="$HOME/.nvm"
. "$(brew --prefix nvm)/nvm.sh"

# YVM Stuff
export YVM_DIR="$HOME/.yvm"
. "$(brew --prefix yvm)/yvm.sh"

Jak rozumiem, mój błąd wynikał z braku dostępu do menedżerów wersji

ex btrg
źródło