TLDR: Hapus instalan paket global menggunakan npm uninstall -g create-react-appdan menghasilkan aplikasi bereaksi baru menggunakan npx create-react-app app.
Isu
Anda menggunakan versi yang lebih lama dari create-react-appyang telah Anda instal secara global menggunakan npm. Itucreate-react-app perintah memanggil paket global ini.
Anda dapat mengonfirmasi bahwa Anda menggunakan versi yang sudah usang dengan menjalankan npm outdated -g create-react-appatau membandingkan create-react-app --versiondengan npm view create-react-app.
Fakta bahwa versi react-scriptsterbaru, tidak ada hubungannya dengan versi paket yang sedang bootstrap app ( create-react-app), yang mengambil versi terbaru dari paket yang digunakan ( react-scriptsdalam kasus ini).
Larutan
Jika Anda ingin terus menggunakan create-react-appperintah, Anda harus memperbarui paket global menggunakan npm update -g create-react-app. Perhatikan bahwa Anda ingin melakukan ini secara berkala agar tetap terbaru. Anda akan melihat yang create-react-apptidak merekomendasikan ini (dicatat dalam log dari instalasi Anda).
Pendekatan yang lebih baik adalah dengan menghapus instalasi global seluruhnya ( npm uninstall -g create-react-app) dan alih-alih menggunakannya npxsehingga mengambil versi terbaru dari paket setiap saat (lebih detail di npxbawah).
Anda harus mengonfirmasi bahwa itu dihapus secara global dengan mencoba menggunakannya create-react-appuntuk memastikan perintah "tidak ditemukan".
Masalah dengan penghapusan instalasi?
Anda dapat men-debug di mana ia diinstal menggunakan which create-react-app. Jika Anda mengalami masalah saat mencopotnya, Anda mungkin memiliki beberapa versi node / npm di komputer Anda (dari beberapa pemasangan, atau karena Anda menggunakan pengelola versi simpul seperti nvm). Ini adalah masalah terpisah yang tidak akan saya bahas di sini, tetapi ada beberapa info dalam jawaban ini .
Pendekatan nuklir cepat adalah dengan paksa menghapusnya ( rm -rf) di jalur yang which create-react-appkembali.
Suplemen
Paket npm global dan npxperintahnya
$ NPM_PACKAGE_NAME akan selalu menggunakan versi paket yang terinstal secara global, terlepas dari direktori tempat Anda berada.
$ npx NPM_PACKAGE_NAME akan menggunakan versi pertama paket yang ditemukannya ketika mencari dari direktori saat ini ke root:
- Jika Anda memiliki paket di direktori Anda saat ini, itu akan menggunakannya.
- Lain jika Anda memiliki paket dalam direktori yang merupakan induk dari direktori Anda saat ini, ia akan menggunakan yang pertama ditemukannya.
- Lain jika Anda memiliki paket yang terinstal secara global, ia akan menggunakannya.
- Lain jika Anda tidak memiliki paket sama sekali, itu akan menginstalnya sementara, menggunakannya, dan kemudian membuangnya. - ini adalah cara terbaik untuk memastikan paket tersebut mutakhir .
Info lebih lanjut tentang npx dapat ditemukan dalam jawaban ini .
Menggunakan npxdengancreate-react-app
create-react-appmemiliki beberapa perintah / alias khusus untuk membuat aplikasi reaksi (bukan npx) yang khusus untuk paket itu ( yarn create react-app, npm init react-app), tetapi npx create-react-appakan bekerja sama seperti halnya dengan paket lain.
yarnvs npmpemasangan global
Benang menyimpan instalasi global dalam folder yang berbeda dari npm, itulah sebabnya mengapa yarn create react-appakan bekerja segera tanpa menghapus paket global npm (sejauh menyangkut benang, paket tersebut belum diinstal).
Ini hanya solusi sementara, karena Anda harus ingat untuk selalu menggunakan benang, bukan npm saat menggunakan Create React App.