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буде працювати так само, як і з іншими пакетами.
yarnvs npmглобальні встановлення
Пряжа зберігає глобальні встановлення в іншій папці, ніж npm, ось чомуyarn create react-app б вона працювала негайно, не видаляючи глобальний пакет npm (що стосується пряжі, пакет не встановлений).
Це лише тимчасове рішення, оскільки вам потрібно пам’ятати, що під час створення додатка Create React завжди використовувати пряжу замість npm.