TLDR: disinstallare il pacchetto globale usando npm uninstall -g create-react-appe generare nuove app di reazione usando npx create-react-app app.
Problema
Stai usando una versione precedente di create-react-appquella che hai installato a livello globale usando npm. Il create-react-appcomando richiama questo pacchetto globale.
Si potrebbe aver confermato che si stava utilizzando una versione non aggiornata eseguendo npm outdated -g create-react-appo il confronto create-react-app --versioncon npm view create-react-app.
Il fatto che la versione di react-scriptsfosse 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-scriptsin questo caso).
Soluzione
Se si desidera continuare a utilizzare il create-react-appcomando, è 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-appquesto 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 npxmodo che acquisisca ogni volta l'ultima versione del pacchetto (maggiori dettagli di npxseguito).
È necessario confermare che è stato disinstallato a livello globale tentando di utilizzare create-react-appper 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-appritorna.
Supplemento
Pacchetti npm globali e il npxcomando
$ 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 npxconcreate-react-app
create-react-appha 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-appfunzionerà allo stesso modo di altri pacchetti.
yarnvs npminstallazioni globali
Yarn memorizza le installazioni globali in una cartella diversa da quella npm, motivo per cui yarn create react-appdovrebbe 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.