TLDR: Видаліть глобальний пакет за допомогою npm uninstall -g create-react-app
та генеруйте нові реагуючі програми за допомогою npx create-react-app app
.
Проблема
Ви використовуєте старішу версію встановленої create-react-app
вами глобально за допомогою npm. Thecreate-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
. Якщо у вас виникають проблеми з його видаленням, у вас може бути кілька версій node / npm на вашому комп'ютері (з декількох встановлень або через те, що ви використовуєте диспетчер версій вузла, наприклад nvm
). Це окреме питання, я не звертатимусь сюди, але в цій відповіді є деяка інформація .
Швидким ядерним підходом було б примусово видалити його ( 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
vs npm
глобальні встановлення
Пряжа зберігає глобальні встановлення в іншій папці, ніж npm
, ось чомуyarn create react-app
б вона працювала негайно, не видаляючи глобальний пакет npm (що стосується пряжі, пакет не встановлений).
Це лише тимчасове рішення, оскільки вам потрібно пам’ятати, що під час створення додатка Create React завжди використовувати пряжу замість npm.