TLDR: disinstallare il pacchetto globale usando npm uninstall -g create-react-app
e generare nuove app di reazione usando npx create-react-app app
.
Problema
Stai usando una versione precedente di create-react-app
quella che hai installato a livello globale usando npm. Il create-react-app
comando richiama questo pacchetto globale.
Si potrebbe aver confermato che si stava utilizzando una versione non aggiornata eseguendo npm outdated -g create-react-app
o il confronto create-react-app --version
con npm view create-react-app
.
Il fatto che la versione di react-scripts
fosse aggiornata, non ha nulla a che fare con la versione del pacchetto che sta eseguendo il bootstrap dell'app ( create-react-app
), che acquisisce le ultime versioni dei pacchetti che utilizza ( react-scripts
in questo caso).
Soluzione
Se si desidera continuare a utilizzare il create-react-app
comando, è necessario aggiornare il pacchetto globale tramite npm update -g create-react-app
. Tieni presente che dovrai farlo periodicamente per tenerlo aggiornato. Noterai che create-react-app
questo non lo consiglia (annotato nei registri della tua installazione).
Un approccio migliore sarebbe quello di eliminare completamente l'installazione globale ( npm uninstall -g create-react-app
) e invece di utilizzarla in npx
modo che acquisisca ogni volta l'ultima versione del pacchetto (maggiori dettagli di npx
seguito).
È necessario confermare che è stato disinstallato a livello globale tentando di utilizzare create-react-app
per assicurarsi che il comando non sia "trovato".
Problemi con la disinstallazione?
È possibile eseguire il debug dove è stato installato utilizzando which create-react-app
. Se si verificano problemi durante la disinstallazione, è possibile che siano presenti più versioni di node / npm sul computer (da più installazioni o perché si utilizza un gestore versione nodo come nvm
). Questo è un problema separato che non affronterò qui, ma ci sono alcune informazioni in questa risposta .
Un rapido approccio nucleare sarebbe quello di rimuoverlo con forza ( rm -rf
) nel percorso che which create-react-app
ritorna.
Supplemento
Pacchetti npm globali e il npx
comando
$ NPM_PACKAGE_NAME
utilizzerà sempre la versione installata a livello globale del pacchetto, indipendentemente dalla directory in cui ci si trova.
$ npx NPM_PACKAGE_NAME
utilizzerà la prima versione del pacchetto che trova durante la ricerca dalla directory corrente alla radice:
- Se hai il pacchetto nella tua directory corrente, lo userà.
- Altrimenti se hai il pacchetto in una directory che è un genitore della tua directory corrente, userà il primo che trova.
- Altrimenti se il pacchetto è installato a livello globale, lo utilizzerà.
- Altrimenti, se non si dispone del pacchetto, lo installerà temporaneamente, lo utilizzerà e quindi lo scarterà. - questo è il modo migliore per assicurarsi che il pacchetto sia aggiornato .
Ulteriori informazioni su npx sono disponibili in questa risposta .
Usando npx
concreate-react-app
create-react-app
ha alcuni comandi / alias speciali per creare un'app di reazione (invece di npx
) specifica per quel pacchetto ( yarn create react-app
, npm init react-app
), ma npx create-react-app
funzionerà allo stesso modo di altri pacchetti.
yarn
vs npm
installazioni globali
Yarn memorizza le installazioni globali in una cartella diversa da quella npm
, motivo per cui yarn create react-app
dovrebbe funzionare immediatamente senza disinstallare il pacchetto npm globale (per quanto riguarda il filo, il pacchetto non è stato installato).
Questa è solo una soluzione temporanea, poiché dovrai ricordare di usare sempre il filo invece di npm quando usi l'App Crea React.