TLDR: Odinstaluj pakiet globalny za pomocą npm uninstall -g create-react-app
i wygeneruj nowe reagujące aplikacje za pomocą npx create-react-app app
.
Kwestia
Używasz starszej wersji create-react-app
, którą zainstalowałeś globalnie za pomocą npm. create-react-app
Komenda wywołuje ten pakiet globalnej.
Mogłeś potwierdził, że uzywasz starej wersji uruchamiając npm outdated -g create-react-app
lub porównać create-react-app --version
z npm view create-react-app
.
Fakt, że wersja react-scripts
była aktualna, nie ma nic wspólnego z wersją pakietu uruchamiającą aplikację ( create-react-app
), która pobiera najnowsze wersje używanych pakietów ( react-scripts
w tym przypadku).
Rozwiązanie
Jeśli chcesz nadal używać create-react-app
polecenia, musisz zaktualizować pakiet globalny za pomocą npm update -g create-react-app
. Pamiętaj, że musisz to robić okresowo, aby być na bieżąco. Zauważysz, że create-react-app
to nie zaleca (odnotowane w dziennikach z instalacji).
Lepszym rozwiązaniem byłoby całkowite usunięcie instalacji globalnej ( npm uninstall -g create-react-app
) i użycie jej, npx
aby za każdym razem pobierała najnowszą wersję pakietu (więcej szczegółów npx
poniżej).
Powinieneś potwierdzić, że został on odinstalowany globalnie, próbując go użyć, create-react-app
aby upewnić się, że polecenie nie zostało znalezione.
Problemy z odinstalowaniem?
Możesz debugować, gdzie został zainstalowany za pomocą which create-react-app
. Jeśli masz problemy z odinstalowaniem, możesz mieć wiele wersji węzła / npm na swoim komputerze (z wielu instalacji lub ponieważ używasz menedżera wersji węzła, takiego jak nvm
). To osobny problem, którego nie omówię tutaj, ale w tej odpowiedzi jest kilka informacji .
Szybkim podejściem nuklearnym byłoby wymuszone usunięcie go ( rm -rf
) na ścieżce, która which create-react-app
powraca.
Suplement
Globalne pakiety npm i npx
polecenie
$ NPM_PACKAGE_NAME
zawsze użyje globalnie zainstalowanej wersji pakietu, niezależnie od tego, w którym katalogu się znajdujesz.
$ npx NPM_PACKAGE_NAME
użyje pierwszej wersji pakietu, którą znajdzie podczas wyszukiwania z bieżącego katalogu do katalogu głównego:
- Jeśli masz pakiet w bieżącym katalogu, użyje go.
- W przeciwnym razie, jeśli masz pakiet w katalogu, który jest rodzicem twojego bieżącego katalogu, użyje pierwszego, który znajdzie.
- W przeciwnym razie, jeśli masz pakiet zainstalowany globalnie, użyje go.
- W przeciwnym razie, jeśli nie masz pakietu, zostanie on tymczasowo zainstalowany, użyje go, a następnie odrzuci. - jest to najlepszy sposób na zapewnienie aktualności pakietu .
Więcej informacji na temat npx można znaleźć w tej odpowiedzi .
Korzystanie npx
zcreate-react-app
create-react-app
ma kilka specjalnych poleceń / aliasów, aby utworzyć aplikację reagującą (zamiast npx
), które są specyficzne dla tego pakietu ( yarn create react-app
, npm init react-app
), ale npx create-react-app
będzie działać tak samo jak w przypadku innych pakietów.
yarn
a npm
instalacje globalne
Przędza przechowuje globalne instalacje w innym folderze niż npm
, dlatego yarn create react-app
działałby natychmiast bez odinstalowywania globalnego pakietu npm (jeśli chodzi o przędzę, pakiet nie został zainstalowany).
Jest to tylko rozwiązanie tymczasowe, ponieważ musisz pamiętać, aby zawsze używać przędzy zamiast npm podczas korzystania z aplikacji Create React.