TLDR: Desinstale o pacote global usando npm uninstall -g create-react-appe gere novos aplicativos de reação usando npx create-react-app app.
Questão
Você está usando uma versão mais antiga da create-react-appque você instalou globalmente usando o npm. O create-react-appcomando chama este pacote global.
Você poderia ter confirmado que estava usando uma versão desatualizada executando npm outdated -g create-react-appou comparando create-react-app --versioncom npm view create-react-app.
O fato de a versão do react-scriptsestar atualizada não tem nada a ver com a versão do pacote que está inicializando o aplicativo ( create-react-app), que captura as versões mais recentes dos pacotes que ele usa ( react-scriptsneste caso).
Solução
Se você quiser continuar usando o create-react-appcomando, precisará atualizar o pacote global usando npm update -g create-react-app. Observe que você deseja fazer isso periodicamente para mantê-lo atualizado. Você notará que create-react-appisso não é recomendado (observado nos logs da sua instalação).
Uma abordagem melhor seria excluir completamente a instalação global ( npm uninstall -g create-react-app) e, em vez disso, usá-la npxpara que ela sempre pegue a versão mais recente do pacote (mais detalhes npxabaixo).
Você deve confirmar que foi desinstalado globalmente, tentando usar create-react-apppara garantir que o comando "não foi encontrado".
Problemas com a desinstalação?
Você pode depurar onde foi instalado usando which create-react-app. Se estiver com problemas para desinstalá-lo, você pode ter várias versões do nó / npm na sua máquina (de várias instalações ou porque usa um gerenciador de versão do nó, como nvm). Esta é uma questão separada que não abordarei aqui, mas há algumas informações nesta resposta .
Uma abordagem nuclear rápida seria removê-lo à força ( rm -rf) no caminho que which create-react-appretorna.
Suplemento
Pacotes npm globais e o npxcomando
$ NPM_PACKAGE_NAME sempre usará a versão do pacote instalada globalmente, independentemente do diretório em que você estiver.
$ npx NPM_PACKAGE_NAME usará a primeira versão do pacote que encontrar ao pesquisar do diretório atual para a raiz:
- Se você tiver o pacote em seu diretório atual, ele será usado.
- Caso contrário, se você tiver o pacote em um diretório pai do seu diretório atual, ele usará o primeiro encontrado.
- Caso contrário, se você tiver o pacote instalado globalmente, ele o usará.
- Else , se você não tiver o pacote em tudo, ele irá instalar temporariamente-lo, usá-lo, e então descartá-lo. - esta é a melhor maneira de garantir que o pacote esteja atualizado .
Mais informações sobre npx podem ser encontradas nesta resposta .
Usando npxcomcreate-react-app
create-react-apppossui alguns comandos / aliases especiais para criar um aplicativo de reação (em vez de npx) que são específicos para esse pacote ( yarn create react-app, npm init react-app), mas npx create-react-appfuncionarão da mesma forma que em outros pacotes.
yarnvs npminstalações globais
O Yarn armazena instalações globais em uma pasta diferente npm, e é por isso yarn create react-appque funcionaria imediatamente sem desinstalar o pacote npm global (no que diz respeito ao yarn, o pacote não foi instalado).
Esta é apenas uma solução temporária, pois você precisará se lembrar de sempre usar fios em vez de npm ao usar o Create React App.