TLDR: desinstale el paquete global usando npm uninstall -g create-react-app
y genere nuevas aplicaciones de reacción usando npx create-react-app app
.
Problema
Estás utilizando una versión anterior de la create-react-app
que has instalado globalmente usando npm. El create-react-app
comando invoca este paquete global.
Que podría haber confirmado que estaba utilizando una versión obsoleta mediante la ejecución npm outdated -g create-react-app
o la comparación create-react-app --version
con npm view create-react-app
.
El hecho de que la versión react-scripts
esté actualizada no tiene nada que ver con la versión del paquete que está iniciando la aplicación ( create-react-app
), que toma las últimas versiones de los paquetes que usa ( react-scripts
en este caso).
Solución
Si desea continuar usando el create-react-app
comando, deberá actualizar el paquete global usando npm update -g create-react-app
. Tenga en cuenta que querrá hacer esto periódicamente para mantenerlo actualizado. Notarás que create-react-app
no recomienda esto (anotado en los registros de tu instalación).
Un mejor enfoque sería eliminar la instalación global por completo ( npm uninstall -g create-react-app
) y, en su lugar, utilizarla npx
para que siempre obtenga la última versión del paquete (más detalles a npx
continuación).
Debe confirmar que se desinstaló globalmente intentando usarlo create-react-app
para asegurarse de que el comando "no se encuentre".
Problemas con la desinstalación?
Puede depurar dónde se instaló usando which create-react-app
. Si tiene problemas para desinstalarlo, es posible que tenga varias versiones de nodo / npm en su máquina (desde múltiples instalaciones, o porque usa un administrador de versiones de nodo como nvm
). Este es un problema separado que no abordaré aquí, pero hay algo de información en esta respuesta .
Un enfoque nuclear rápido sería eliminarlo con fuerza ( rm -rf
) en el camino que which create-react-app
regresa.
Suplemento
Paquetes npm globales y el npx
comando
$ NPM_PACKAGE_NAME
siempre usará la versión instalada globalmente del paquete, independientemente del directorio en el que se encuentre.
$ npx NPM_PACKAGE_NAME
usará la primera versión del paquete que encuentre cuando busque desde el directorio actual a la raíz:
- Si tiene el paquete en su directorio actual, lo usará.
- De lo contrario, si tiene el paquete en un directorio que es padre de su directorio actual, utilizará el primero que encuentre.
- De lo contrario, si tiene el paquete instalado globalmente, lo usará.
- De lo contrario, si no tiene el paquete, lo instalará temporalmente, lo usará y luego lo descartará. - esta es la mejor manera de garantizar que el paquete esté actualizado .
Puede encontrar más información sobre npx en esta respuesta .
Usando npx
concreate-react-app
create-react-app
tiene algunos comandos / alias especiales para crear una aplicación de reacción (en lugar de npx
) que son específicos de ese paquete ( yarn create react-app
, npm init react-app
), pero npx create-react-app
funcionarán igual que con otros paquetes.
yarn
vs npm
instalaciones globales
Yarn almacena las instalaciones globales en una carpeta diferente npm
, por lo yarn create react-app
que funcionaría de inmediato sin desinstalar el paquete global npm (en lo que respecta al hilo, el paquete no se ha instalado).
Sin embargo, esta es solo una solución temporal, ya que deberá recordar usar siempre hilo en lugar de npm cuando use la aplicación Create React.