React-native-router-flux: Pengecualian Fatal: com.facebook.react.common.JavascriptException: TypeError: undefined bukan objek (mengevaluasi 'r.default')

Dibuat pada 12 Jul 2018  ·  32Komentar  ·  Sumber: aksonov/react-native-router-flux

Versi: kapan

Beri tahu kami versi mana yang Anda gunakan:

  • "react-native-router-flux": "^4.0.0-beta.31"
  • "react-asli": "0.56.0"

-- 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
@18 :912
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)

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)

{
  "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

Semua 32 komentar

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:

  • forking reaksi-navigasi
  • melakukan modifikasi dalam navigasi reaksi DrawerNavigator di cabang 1.x
  • tambahkan ini ke package.json saya:
  "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?

@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!!!!!!!!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

rafaelcorreiapoli picture rafaelcorreiapoli  ·  3Komentar

tonypeng picture tonypeng  ·  3Komentar

llgoer picture llgoer  ·  3Komentar

xnog picture xnog  ·  3Komentar

VictorK1902 picture VictorK1902  ·  3Komentar