TLDR: Hapus instalan paket global menggunakan npm uninstall -g create-react-app
dan menghasilkan aplikasi bereaksi baru menggunakan npx create-react-app app
.
Isu
Anda menggunakan versi yang lebih lama dari create-react-app
yang 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-app
atau membandingkan create-react-app --version
dengan npm view create-react-app
.
Fakta bahwa versi react-scripts
terbaru, tidak ada hubungannya dengan versi paket yang sedang bootstrap app ( create-react-app
), yang mengambil versi terbaru dari paket yang digunakan ( react-scripts
dalam kasus ini).
Larutan
Jika Anda ingin terus menggunakan create-react-app
perintah, 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-app
tidak 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 npx
sehingga mengambil versi terbaru dari paket setiap saat (lebih detail di npx
bawah).
Anda harus mengonfirmasi bahwa itu dihapus secara global dengan mencoba menggunakannya create-react-app
untuk 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-app
kembali.
Suplemen
Paket npm global dan npx
perintahnya
$ 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 npx
dengancreate-react-app
create-react-app
memiliki 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-app
akan bekerja sama seperti halnya dengan paket lain.
yarn
vs npm
pemasangan global
Benang menyimpan instalasi global dalam folder yang berbeda dari npm
, itulah sebabnya mengapa yarn create react-app
akan 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.