Beri tahu kami versi mana yang Anda gunakan:
-- isu
Ketika saya menambahkan laci mendapatkan pengecualian dan aplikasi crash pada rilis apk, ketika saya menjalankan aplikasi di debug itu akan dikompilasi dan berjalan dengan baik.
Kode Laci saya
<Drawer
hideNavBar
key="drawerMain"
contentComponent={SideBar}
drawerImage={MenuIcon}
drawerWidth={300}
type="reset">
<Stack
initial
key="HomeWithMap"
title="home"
tabBarLabel="Profile"
inactiveBackgroundColor="#FFF"
activeBackgroundColor="#004E9E"
icon={TabIcon}
navigationBarStyle={{ backgroundColor: '#004E9E' }}
titleStyle={{ color: 'white', alignSelf: 'center' }}>
<Scene
key="HomeScreenMap"
initial={false}
navBar={CustomNavBar}
component={HomeScreenWithMap}
type="reset"
></Scene>
</Stack>
<Stack
key="HomeWithList"
title="home"
tabBarLabel="Profile"
inactiveBackgroundColor="#FFF"
activeBackgroundColor="#004E9E"
icon={TabIcon}
navigationBarStyle={{ backgroundColor: '#004E9E' }}
titleStyle={{ color: 'white', alignSelf: 'center' }}>
<Scene
key="HomeScreenList"
navBar={CustomNavBar}
component={HomeScreenWithList}
type="reset"
></Scene>
</Stack>
</Drawer>
--Pengecualian
Pengecualian Fatal: com.facebook.react.common.JavascriptException: TypeError: undefined bukan objek (mengevaluasi 'r.default')
Kesalahan ini terletak di:
di Tidak Diketahui
di t
di RCTView
di RCTView
di t, tumpukan:
w@380 :1598
processScene@310 :16513
oe@310 :14574
processScene@310 :15557
buat@310 :11694
w@401 :4077
tr@106 :42936
Nr@106 : 56528
Ur@106 :56960
ui@106 :61804
oi@106 :61224
ri@106 :60352
Ir@106 :59332
di@106 :66528
hai@106 :66840
render@106 :69158
ekspor@283 :440
lari@279 :601
runApplication@279 :2051
nilai@18 :3329
nilai@18 :2598
nilai@18 :884
at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
at java.lang.reflect.Method.invoke(Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:160)
at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop(Looper.java:148)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
at java.lang.Thread.run(Thread.java:818)
Jadi penyebab kesalahan hanya bodoh.
Di node_modules/react-navigation/src/navigators/DrawerNavigator.js ada TabRouter yang diimpor, yang sepertinya komponen (dimulai dengan huruf besar), tetapi pada kenyataannya hanya berfungsi, jadi ketika kode mencapai const contentRouter = TabRouter(routeConfigs, tabsConfig);
itu melempar kesalahan itu karena tidak menyelesaikannya sebagai fungsi? Ia bahkan tidak menjalankannya.
Ini adalah beberapa hal konfigurasi babel baru atau sesuatu, yang hanya ruang js yang aneh bagi saya ...
Jadi salah satu cara untuk memperbaikinya adalah dengan mengganti nama semua TabRouter
dalam file itu menjadi tabRouter
. Saya benci memodifikasi file node_modules, saya yakin pasti ada cara untuk mengatakan kepada kompiler (atau apa pun) bahwa TabRouter sebagai fungsinya ok?
@CptFabulouso benar..berfungsi..terima kasih
Terima kasih banyak. Adakah perbaikan yang tepat di suatu tempat untuk masalah ini? Maksud saya tidak memodifikasi node_modules secara manual?
@CptFabulouso dapatkah Anda menjelaskan bagaimana Anda menemukan asal masalah? Setelah mengganti nama TabRouter
menjadi tabRouter
saya masih mendapatkan masalah r.default
...
import tabRouter from '../routers/TabRouter';
const contentRouter = tabRouter(routeConfigs, tabsConfig);
Juga mencoba melakukan itu di semua Navigator lain tanpa hasil ...
Jika Anda menjelaskan bagaimana Anda menemukan masalahnya, saya mungkin dapat menemukan apa yang masih salah.
Masih mendapatkan untuk saat ini: ReactNativeJS: undefined is not an object (evaluating 'r.default')
Saya menggunakan log konsol (melihatnya di studio Android) untuk melacak di mana kode melempar kesalahan. Apakah Anda juga memperbaiki baris berikutnya setelah contentRouter?
const contentRouter = tabRouter(routeConfigs, tabsConfig);
const drawerRouter = tabRouter(
Ok sudah berfungsi sekarang, hanya melakukan apa yang Anda sarankan untuk mengedit 3 baris ini di node_modules/react-navigation/src/navigators/DrawerNavigator.js
:
import tabRouter from '../routers/TabRouter';
const contentRouter = tabRouter(routeConfigs, tabsConfig);
const drawerRouter = tabRouter(
Akan sangat bagus untuk menemukan penyebab rute dan memperbaikinya karena sekarang satu-satunya solusi bersih (_not so_) yang saya temukan adalah:
"resolutions": {
"react-native-router-flux/**/react-navigation": "https://github.com/ebaynaud/react-navigation.git#1.x"
},
Juga telah mengirimkan PR tentang navigasi reaksi: https://github.com/react-navigation/react-navigation/pull/4699
@ebaynaud versi reaksi-navigasi apa yang Anda gunakan?
Awalnya itu yang ditentukan dalam dependensi RNRF saat ini, jadi 1.5.8.
Sekarang saya melakukan fork yang terakhir di cabang react-navigation 1.x (rilis terbaru adalah 1.5.11) dan melakukan modifikasi di fork saya: https://github.com/ebaynaud/react-navigation.git#1.x
Solusi @ebaynaud bekerja untuk saya, akan menunggu pengiriman PR
Mungkinkah ini terkait dengan ini ?
Sayangnya PR saya https://github.com/react-navigation/react-navigation/pull/4699 ditolak karena kurangnya informasi yang diberikan. Apakah seseorang bisa menjelaskan ini?
@ebaynaud terima kasih atas perbaikannya, ini berhasil untuk saya!
ini karena plugin babel yang memungkinkan pembuatan instance tanpa kata kunci "baru" dihapus dari babel 7 https://babeljs.io/docs/en/babel-plugin-transform-class-constructor-call
Saya memukul ini juga :( Ini sangat membingungkan untuk di-debug
Ini mungkin solusi yang lebih tepat untuk masalah ini. Saya telah melihatnya bekerja dalam sebuah proyek, belum mencobanya di salah satu milik saya.
Saya sudah melakukannya — berfungsi dalam mode debug, masih macet saat rilis
jalankan cuplikan package.json ini di postinstall atau secara manual sebelum rilis:
Untuk navigasi reaksi yang lebih lama (di mana SwitchRouter tidak tersedia)
{
"scripts": {
"fix:react-navigation": "sed -i '' 's/ TabRouter/ tabRouter/g' ./node_modules/react-navigation/src/navigators/DrawerNavigator.js && sed -i '' 's/ StackRouter/ stackRouter/g' ./node_modules/react-navigation/src/navigators/StackNavigator.js && sed -i '' 's/ TabRouter/ tabRouter/g' ./node_modules/react-navigation/src/navigators/TabNavigator.js"
}
}
Untuk navigasi reaksi yang lebih baru (di mana SwitchRouter tersedia)
{
"scripts": {
"fix:react-navigation": "sed -i '' 's/ TabRouter/ tabRouter/g' ./node_modules/react-navigation/src/navigators/DrawerNavigator.js && sed -i '' 's/ StackRouter/ stackRouter/g' ./node_modules/react-navigation/src/navigators/StackNavigator.js && sed -i '' 's/ TabRouter/ tabRouter/g' ./node_modules/react-navigation/src/navigators/TabNavigator.js && sed -i '' 's/ SwitchRouter/ switchRouter/g' ./node_modules/react-navigation/src/navigators/SwitchNavigator.js"
}
}
harus memperbaiki masalah sampai navigasi reaksi merilis tambalan untuk ini
@pavjacko Dengan perbaikan ini diterapkan, masih tidak dapat menjalankannya dalam mode rilis (mode debug ok)
2018-08-07 15:24:35.636 [error][tid:com.facebook.react.JavaScript] TypeError: undefined is not an object (evaluating 't.default')
Saya menjalankan perintah ini dari root proyek, untuk memperbaikinya:
sed -i -e 's/TabRouter/tabRouter/g' node_modules/react-navigation/src/navigators/DrawerNavigator.js
sed -i -e 's/\/routers\/tabRouter/\/routers\/TabRouter/g' node_modules/react-navigation/src/navigators/DrawerNavigator.js
Saya menghadapi masalah yang sama, saya mencoba semua yang disebutkan di atas, tidak ada yang berhasil untuk saya.
Mode debug berfungsi dengan baik. Masalah terjadi dalam mode rilis.
Versi RN: 0.56.0
sama,
Saya tidak memiliki file DrawerNavigator.js.
Saya mencoba semua solusi tetapi tidak berhasil
saya minta maaf tapi pernah punya masalah
Bekerja untuk saya. :)
mana dari semua solusi yang berhasil untuk Anda atau apa yang Anda lakukan?
@VesperDev saya mencoba dengan https://github.com/adamivancza/react-navigation/commit/db8be7cc0b4ac738242ce82bcc2d1f3254a028c0#comments . Periksa .
@Anujmoglix versi RN apa yang Anda gunakan?
0,56
Terima kasih kawan, mengganti nama TabRouter menjadi tabRouter di file "node_modules/react-navigation/src/navigators/DrawerNavigator.js" berhasil untuk saya.
Terima kasih ini bekerja.
Terima kasih kawan, mengganti nama TabRouter menjadi tabRouter di file "node_modules/react-navigation/src/navigators/DrawerNavigator.js" berhasil untuk saya.
Terima kasih banyak!!!!!!!!
Komentar yang paling membantu
jalankan cuplikan package.json ini di postinstall atau secara manual sebelum rilis:
Untuk navigasi reaksi yang lebih lama (di mana SwitchRouter tidak tersedia)
Untuk navigasi reaksi yang lebih baru (di mana SwitchRouter tersedia)
harus memperbaiki masalah sampai navigasi reaksi merilis tambalan untuk ini