TLDR: desinstale el paquete global usando npm uninstall -g create-react-appy genere nuevas aplicaciones de reacción usando npx create-react-app app.
Problema
Estás utilizando una versión anterior de la create-react-appque has instalado globalmente usando npm. El create-react-appcomando 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-appo la comparación create-react-app --versioncon npm view create-react-app.
El hecho de que la versión react-scriptsesté 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-scriptsen este caso).
Solución
Si desea continuar usando el create-react-appcomando, 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-appno 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 npxpara que siempre obtenga la última versión del paquete (más detalles a npxcontinuación).
Debe confirmar que se desinstaló globalmente intentando usarlo create-react-apppara 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-appregresa.
Suplemento
Paquetes npm globales y el npxcomando
$ 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 npxconcreate-react-app
create-react-apptiene 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-appfuncionarán igual que con otros paquetes.
yarnvs npminstalaciones globales
Yarn almacena las instalaciones globales en una carpeta diferente npm, por lo yarn create react-appque 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.