2017-12-25 98 views
8

Expo ile Native uygulamasını React yapıyorum. Expo uygulaması ile Android cihazımda iyi çalışıyor. Ama ben exp build: android komutu ile apk inşa ettikten sonra hata var.React Native ScrollView TypeError: undefined bir nesne değil ('this._subscribableSubscriptions.forEach' değerlendirmesini yapan)

Sorun, ScrollView öğesinin içindedir. ScrollView öğesini kaldırırsam gider. İşte kod snippet'im. renderCurrencies()

deneyin bu hesaba dönüştürmek:

class Main extends Component { 
state = { 
    refreshing: false 
}; 

renderCurrencies() { 
    if (!Object.values(this.props.currencies).length) { 
     return <View />; 
    } 

    return Object.values(this.props.currencies).map(item => { 
     return (
      <CurrencyRow 
       key={item.code} 
       code={item.code} 
       title={item.title} 
      /> 
     ); 
    }); 
} 

onRefresh =() => { 
    Object.values(this.props.currencies).map(item => { 
     this.props.sellBuyFetch(item.code); 
    }); 
}; 

render() { 
    return (
     <View style={styles.container}> 
      <ScrollView 
       refreshControl={ 
        <RefreshControl 
         refreshing={this.state.refreshing} 
         onRefresh={this.onRefresh} 
        /> 
       } 
      > 
       {this.renderCurrencies()} 
      </ScrollView> 
     </View> 
    ); 
} 
} 

const styles = StyleSheet.create({ 
container: { 
    flex: 1, 
    marginTop: 40, 
}, 
}); 

cevap

6

Bu hataya, bir yayın sürümü oluştururken kullanılan uglify-es 3.3.X neden olur.

sizin package.json için bu bloğu ekleyin:

"resolutions": { "uglify-es": "3.2.2" }

ben hem Expo üzerinde yayın ve bağımsız uygulama oluşturup şimdi bir cazibe gibi çalışıyor çalıştı.

+0

Bu çözümü github üzerinde gördüm, ancak bir şekilde bana yardımcı olmadı. Temizlemem gereken bir önbellek var mı? –

+0

projenizi kontrol edin, node_modules \ uglify-es \ package.json, kendi versiyonunu kontrol edin. Eğer hala 3.3.X sürümü varsa, uglify-es klasörünü silebilir ve tekrar 'iplik' i çalıştırabilirsiniz, sonra XDE'de Yardım -> XDE Önbelleği Temizle –

+0

benim için çalışır, teşekkürler. –

0

Ben ancak senin sorunun bu yöntemde olabilir, kodunuzu bir FlatList ile çok daha basit olacağını düşünüyorum

renderCurrencies =() = > {

Belki de sahne bulunamadı. Günlüğünde başka bir sorun görüyor musunuz? Bu yardımcı olmazsa, sorunu ayıklayın ve bu yöntemin içinde bulunup bulunmadığını bulun.

Not: Henüz Expo ile çalışmadım.

+0

denedim renderCurrencies yönteminden dönüş sadece , ama hayır şans. Yani problem bu yöntemin içinde değil. Ayrıca FlatList (ipucu için teşekkürler) denedi, ama aynı hatayı aldım. –

4

Aynı sorun vardı. Bu sorunu çözmek için Yolu:

değişiklik

this._subscribableSubscriptions.forEach(

bu dosyada

this._subscribableSubscriptions && this._subscribableSubscriptions.forEach(

için:

YOUR_PROJECT/node_modules/react-native/Libraries/Components/Subscribable.js 
+0

@kykapetak Expo ile denediniz mi? Bence, düğüm modülleri ile kendi taraflarında bir APK geliştirir, o yüzden bana yardım etmeyin. –

+1

@ KyKaPeTuk'un kodu değişikliği benim için sorun etrafında çalıştı. CRNA veya Expo kullanmıyorum (bu tür sebeplerden dolayı). Tepki-yerel Github yanıtında bir iş parçacığı var: https://github.com/facebook/react-native/issues/17348 – ChillyPenguin

1

sayesinde @kykapetuk ve @chillypenguin. Bu React Native hata https://github.com/facebook/react-native/issues/17348 gibi görünüyor. Expo durumunda, @kykapetuk geçici çözümünü kullanamayız, bunun nedeni APK'nın Expo sunucusunda kurulmasına neden olur. Benim için geçerli geçici çözüm - Expo kullanmayın. Muhtemelen, başka bir sürümü tepki-yerel kütüphane kullanmak için olası bir çözüm.

0

React Native 0.5.1'de bir hata olabilir.

Bu özel dosyayı proje/node_modules/react-native/Kitaplıklar/Bileşenler/Subscribable yanıtında 33. satırdaki thissubscribableSubscriptions değişkenini değerlendirerek bunu düzeltdim.js

bu değiştirme: Buna

this._subscribableSubscriptions.forEach(

:

this._subscribableSubscriptions && this._subscribableSubscriptions.forEach(

https://github.com/facebook/react-native/issues/17348

+0

"node_modules" içindeki dosyaları düzenleme, bir kütüphane sonraki güncellemesiyle geçersiz kılınacağı için asla iyi bir fikir değildir. –

İlgili konular