TLDR: Odinstaluj pakiet globalny za pomocą npm uninstall -g create-react-appi 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-appKomenda wywołuje ten pakiet globalnej.
Mogłeś potwierdził, że uzywasz starej wersji uruchamiając npm outdated -g create-react-applub porównać create-react-app --versionz npm view create-react-app.
Fakt, że wersja react-scriptsbył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-scriptsw tym przypadku).
Rozwiązanie
Jeśli chcesz nadal używać create-react-apppolecenia, 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-appto 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, npxaby za każdym razem pobierała najnowszą wersję pakietu (więcej szczegółów npxponiżej).
Powinieneś potwierdzić, że został on odinstalowany globalnie, próbując go użyć, create-react-appaby 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-apppowraca.
Suplement
Globalne pakiety npm i npxpolecenie
$ 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 npxzcreate-react-app
create-react-appma 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-appbędzie działać tak samo jak w przypadku innych pakietów.
yarna npminstalacje globalne
Przędza przechowuje globalne instalacje w innym folderze niż npm, dlatego yarn create react-appdział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.