TLDR: Désinstallez le package global à l'aide npm uninstall -g create-react-app
et 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-app
celle 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-app
ou en comparant create-react-app --version
avec npm view create-react-app
.
Le fait que la version de react-scripts
soit à 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-scripts
dans ce cas).
Solution
Si vous souhaitez continuer à utiliser la create-react-app
commande, 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-app
n'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 npx
afin 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-app
pour 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-app
revient.
Supplément
Packages npm globaux et npx
commande
$ 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 npx
aveccreate-react-app
create-react-app
a 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-app
fonctionneront de la même manière qu'avec les autres packages.
yarn
vs npm
installations globales
Yarn stocke les installations globales dans un dossier différent de celui npm
, c'est pourquoi yarn create react-app
fonctionnerait 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.