TLDR: удалите глобальный пакет с помощью npm uninstall -g create-react-appи создайте новые приложения реакции, используя npx create-react-app app.
вопрос
Вы используете более старую версию, create-react-appкоторую вы установили глобально, используя npm. create-react-app вызывает этот глобальный пакет.
Вы могли бы подтвердить, что используете устаревшую версию, запустив npm outdated -g create-react-appили сравнив create-react-app --versionс npm view create-react-app.
Тот факт, что версия react-scriptsбыла обновленной, не имеет ничего общего с версией пакета, который загружает приложение ( create-react-app), которое захватывает последние версии пакетов, которые оно использует ( react-scriptsв данном случае).
Решение
Если вы хотите продолжить использовать create-react-appкоманду, вам нужно обновить глобальный пакет, используя npm update -g create-react-app. Обратите внимание, что вы хотите делать это периодически, чтобы поддерживать его в актуальном состоянии. Вы заметите, что create-react-appне рекомендует это (отмечено в журналах от вашей установки).
Лучшим подходом было бы полностью удалить глобальную установку ( npm uninstall -g create-react-app) и использовать ее, npxчтобы она каждый раз получала последнюю версию пакета (более подробноnpx ниже).
Вы должны подтвердить, что он был удален глобально, попытавшись использовать create-react-appего, чтобы убедиться, что команда «не найдена».
Проблемы с удалением?
Вы можете отлаживать, где он был установлен, используя which create-react-app. Если у вас возникли проблемы с его удалением, у вас может быть несколько версий узла / npm на вашем компьютере (из нескольких установок или потому, что вы используете менеджер версий узла, например nvm). Это отдельная проблема, которую я не буду здесь решать, но в этом ответе есть некоторая информация .
Быстрый ядерный подход заключается в принудительном удалении it ( rm -rf) на пути, который which create-react-appвозвращается.
дополнение
Глобальные пакеты npm и npxкоманда
$ NPM_PACKAGE_NAME всегда будет использовать глобально установленную версию пакета, независимо от того, в каком каталоге вы находитесь.
$ npx NPM_PACKAGE_NAME будет использовать первую версию пакета, которую он найдет при поиске из текущего каталога в корень:
- Если у вас есть пакет в вашем текущем каталоге, он будет использовать его.
- Иначе, если у вас есть пакет в каталоге, который является родительским для вашего текущего каталога, он будет использовать первый найденный пакет.
- Иначе, если у вас есть пакет, установленный глобально, он будет использовать его.
- Иначе, если у вас нет пакета вообще, он временно установит его, будет использовать, а затем откажется от него. - это лучший способ убедиться, что пакет обновлен .
Больше информации о npx можно найти в этом ответе .
Использование npxсcreate-react-app
create-react-appимеет некоторые специальные команды / псевдонимы для создания приложения реакции (вместо npx), которые специфичны для этого пакета ( yarn create react-app, npm init react-app), но npx create-react-appбудут работать так же, как и с другими пакетами.
yarnпротив npmглобальных установок
Yarn хранит глобальные установки в папке, отличной от той npm, которая yarn create react-appдолжна работать немедленно, не удаляя глобальный пакет npm (что касается пряжи, пакет не был установлен).
Это лишь временное решение, так как вам нужно помнить, что при использовании Create React App всегда следует использовать пряжу вместо npm.