TLDR: Désinstallez le package global à l'aide npm uninstall -g create-react-appet générez de nouvelles applications de réaction à l'aide npx create-react-app app.
Problème
Vous utilisez une ancienne version de create-react-appcelle que vous avez installée globalement à l'aide de npm. lecreate-react-app commande appelle ce package global.
Vous auriez pu confirmer que vous utilisiez une version obsolète en exécutant npm outdated -g create-react-appou en comparant create-react-app --versionavec npm view create-react-app.
Le fait que la version de react-scriptssoit à jour n'a rien à voir avec la version du package qui amorce l'application ( create-react-app), qui récupère les dernières versions des packages qu'elle utilise ( react-scriptsdans ce cas).
Solution
Si vous souhaitez continuer à utiliser la create-react-appcommande, vous devrez mettre à jour le package global à l'aide de npm update -g create-react-app. Notez que vous voudrez le faire périodiquement pour le garder à jour. Vous remarquerez que cela create-react-appn'est pas recommandé (noté dans les journaux de votre installation).
Une meilleure approche serait de supprimer complètement l'installation globale ( npm uninstall -g create-react-app) et de l'utiliser à la place npxafin qu'elle récupère la dernière version du package à chaque fois (plus de détails surnpx ci-dessous).
Vous devez confirmer qu'il a été désinstallé globalement en essayant de l'utiliser create-react-apppour vous assurer que la commande est "introuvable".
Des problèmes avec la désinstallation?
Vous pouvez déboguer où il a été installé à l'aide de which create-react-app. Si vous rencontrez des problèmes pour le désinstaller, vous pouvez avoir plusieurs versions de node / npm sur votre ordinateur (à partir de plusieurs installations, ou parce que vous utilisez un gestionnaire de version de nœud tel que nvm). Il s'agit d'un problème distinct que je ne traiterai pas ici, mais il y a quelques informations dans cette réponse .
Une approche nucléaire rapide serait de l'enlever de force ( rm -rf) sur le chemin qui which create-react-apprevient.
Supplément
Packages npm globaux et npxcommande
$ NPM_PACKAGE_NAME utilisera toujours la version installée globalement du package, quel que soit le répertoire dans lequel vous vous trouvez.
$ npx NPM_PACKAGE_NAME utilisera la première version du paquet qu'il trouve lors de la recherche du répertoire courant à la racine:
- Si vous avez le package dans votre répertoire actuel, il l'utilisera.
- Sinon, si vous avez le package dans un répertoire parent de votre répertoire actuel, il utilisera le premier qu'il trouve.
- Sinon, si le package est installé dans le monde, il l'utilisera.
- Sinon, si vous n'avez pas du tout le paquet, il va l'installer temporairement, l'utiliser, puis le jeter. - c'est le meilleur moyen de s'assurer que le colis est à jour .
Plus d'informations sur npx peuvent être trouvées dans cette réponse .
Utilisation npxaveccreate-react-app
create-react-appa des commandes / alias spéciaux pour créer une application de réaction (au lieu de npx) qui sont spécifiques à ce package ( yarn create react-app, npm init react-app), mais npx create-react-appfonctionneront de la même manière qu'avec les autres packages.
yarnvs npminstallations globales
Yarn stocke les installations globales dans un dossier différent de celui npm, c'est pourquoi yarn create react-appfonctionnerait immédiatement sans désinstaller le package global npm (en ce qui concerne yarn, le package n'a pas été installé).
Cependant, ce n'est qu'une solution temporaire, car vous devrez vous rappeler de toujours utiliser du fil au lieu de npm lorsque vous utilisez Create React App.