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.