Saat ini saya sedang melalui tutorial React-Native. Saya mulai dengan tutorial Memulai, di mana saya membuat proyek asli reaksi baru dan berhasil menjalankan proyek pada perangkat saya.
Saya kemudian memulai tutorial Alat Peraga , saya menyalin cuplikan kode dan mencoba menjalankan proyek lagi dan memiliki pesan kesalahan berikut muncul di layar saya:
Jawaban:
Saya kira itu adalah kesalahan yang disebabkan oleh tidak cocoknya nama proyek dan komponen terdaftar Anda.
Anda telah memulai proyek dengan satu nama, yaitu
react-native init AwesomeApp
Tetapi dalam file index.ios.js Anda mendaftarkan komponen lain
AppRegistry.registerComponent('Bananas', () => Bananas);
Ketika itu harus menjadi
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
Coba perbaiki.
sumber
moduleName:@"AwesemeApp"
baris dalam file AppDelegate.m merekaSebagian besar masalahnya adalah Anda memiliki
react-native start
server lain (yaitu React Native Packager) yang berjalan baik di terminal lain atau tab TMUX lain (jika Anda menggunakan TMUX).Anda perlu menemukan proses itu dan menutupnya, jadi setelah menjalankan
react-native run-ios
misalnya, itu akan membuat server pembuat paket baru yang terdaftar untuk aplikasi spesifik itu.Temukan saja proses itu menggunakan:
temukan id proses (PID) dan bunuh proses paket menggunakan
kill
perintah (miskill -9 [PID]
.). Anda harus menemukanlaunchPackager.command
aplikasi di macOS, tidak yakin tentang sistem operasi lain.Kemudian coba jalankan
run-ios
(atau android) lagi. Anda harus dapat melihat path baru setelah menjalankan server packager baru, misalnya:sumber
react-native start --port <otherport>
, haruskah saya berlarireact-native run-<platform>
dengan cara lain?, Terima kasihstart
perintah menjalankan server paket jadi jika Anda sudah mengkompilasi aplikasi Anda, tidak perlu melakukanrun-<platform>
.Ubah
MainActivity
seperti ini,sumber
Solusi saya adalah mengubah nama modul di "AppDelegate.m"
dari
moduleName:@"AwesomeProject"
untuk
moduleName:@"YourNewProjectName"
sumber
Pertama-tama Anda harus memulai aplikasi Anda:
Kemudian, Anda harus menetapkan nama aplikasi Anda sebagai argumen pertama registerComponent.
Ini bekerja dengan baik.
sumber
Silakan periksa file app.json Anda dalam proyek. jika belum ada baris appKey maka Anda harus menambahkannya
sumber
Dalam kasus saya ada baris ini di MainActivity.java yang terlewatkan ketika saya menggunakan
react-native-rename
cli (dari NPM)Tentunya Anda harus mengganti nama menjadi nama aplikasi Anda.
sumber
Saya pikir server simpul berjalan dari folder lain. Jadi bunuh dan jalankan di folder saat ini.
Temukan server simpul yang berjalan: -
lsof -i :8081
Bunuh menjalankan server simpul: -
kill -9 <PID>
Misalnya:-
kill -9 1653
Mulai node server dari folder asli reaksi saat ini: -
react-native run-android
sumber
Saya memiliki masalah yang sama dan bagi saya akar penyebabnya adalah bahwa saya menjalankan (mulai asli-reaks) paket dari folder asli-reaksi (AwesomeApp), sementara saya membuat proyek lain di folder lain.
Menjalankan paket dari direktori aplikasi baru menyelesaikannya.
sumber
Ini juga bisa karena nama komponen Root dimulai dengan huruf kecil.
Perbaiki atau buat proyek sekali lagi dengan nama PascalCase.
misal menyalakan HelloWord baru
sumber
Semua jawaban yang diberikan tidak berhasil untuk saya.
Saya memiliki proses simpul lain yang berjalan di terminal lain, saya menutup terminal perintah itu dan semuanya berfungsi seperti yang diharapkan.
sumber
Anda perlu mendaftarkannya di index.android.js / index.ios.js
seperti ini:
sumber
Saya menyelesaikan ini dengan mengubah yang berikut di file app.json. Tampaknya huruf kapital melempar kesalahan ini.
Dari:
Untuk:
sumber
Daripada mengubah nama menjadi
AppRegistry
,Jalankan init-asli Pisang init, ini akan membuat kode boilerplate reaksi untuk proyek Pisang dan
AppRegistry.registerComponent
secara otomatis akan mengarah ke pisangsumber
Tidak ada solusi yang bekerja untuk saya. Saya harus membunuh proses berikut dan menjalankan re-native run-android dan berhasil.
simpul ./local-cli/cli.js mulai
sumber
Saya memiliki masalah yang sama. Saya menggunakan Windows untuk membuat aplikasi reaksi asli untuk Android dan mengalami kesalahan yang sama. Inilah yang berhasil.
Simpan dan jalankan aplikasi secara normal. Itu berhasil bagi saya.
sumber
Masalahnya juga akan muncul ketika, di index.js, Anda telah memberi nama aplikasi secara berbeda dari nama yang Anda berikan untuk paket android / ios ; mungkin ini terjadi ketika Anda telah mengeluarkan aplikasi. Jadi pastikan saat menelepon
AppRegistry.registerComponent('someappname', () => App)
, someappname juga digunakan untuk paket asli atau sebaliknya.sumber
Saya menemukan di mana masalahnya dalam kasus saya (OS Windows 10), tetapi mungkin juga membantu di Linux (Anda mungkin mencoba).
Di
windows power shell
, ketika Anda ingin menjalankan aplikasi (pertama kali setelah boot pc) dengan menjalankan perintah berikut,Itu memulai
node process/JS server
di yang lainconsole panel
, dan Anda tidak menemukan kesalahan ini. Tapi, ketika Anda ingin menjalankan aplikasi lain , Anda harus perlu menutup yang sudah berjalanJS server console panel
. Dan kemudian jalankan perintah yang sama untuk aplikasi lain daripower shell
, perintah itu akan secara otomatis memulai server JS baru untuk aplikasi ini, dan Anda tidak akan menemukan kesalahan ini.Anda tidak perlu menutup dan membuka kembali
power shell
untuk menjalankan aplikasi lain, Anda harus menutupnode console
untuk menjalankan aplikasi lain.sumber
Setelah membaca semua hal di atas, saya menemukan bahwa mungkin ada alasan lain untuk ini.
Dalam kasus saya:
react-native-cli: 2.0.1
asli-reaksi: 0.60.4
dan struktur berikut:
Pertama-tama harus dicatat bahwa index.android belum diperbarui di Android Studio ketika build dijalankan oleh Metro builder (react-native run-android) sehingga harus dilakukan secara manual. Juga di Android studio tidak "membaca" itu
app.json (dibuat secara default bersama dengan index.js, yang berganti nama menjadi index.android.js):
dan ini seperti
(dalam kasus saya)
menyebabkan fakta bahwa android studio tidak tahu apa yang merujuk authApp. Saya memperbaiki untuk saat ini mengacu pada nama aplikasi dengan nama stringnya dan tidak menggunakan impor itu dari app.json:
sumber
Ini menyelesaikannya untuk saya
Jadi
index.js
file sayaDan
package.json
file saya :sumber
Solusi ini bekerja untuk saya setelah 2 hari debugging. Ubah ini:
untuk
sumber