2017-12-25 107 views
8

मैं एक्सपो के साथ प्रतिक्रियात्मक मूल ऐप बना रहा हूं। यह एक्सपो एप्लिकेशन के माध्यम से मेरे एंड्रॉइड डिवाइस पर ठीक काम करता है। लेकिन एक्सप बिल्ड के माध्यम से एपीके बनाने के बाद मुझे त्रुटि है: एंड्रॉइड कमांड।प्रतिक्रिया मूल स्क्रॉल दृश्य प्रकार त्रुटि: अपरिभाषित एक वस्तु नहीं है ('this._ सदस्यता छोड़ने योग्य सदस्यता .forEach' का मूल्यांकन)

TypeError: undefined is not an object (evaluating 'this._subscribableSubscriptions.forEach')             
This error is located at: 
    in ScrollView 
    in RCTView 
    in r 
    in Connect(r) 
    in n 
    in t 
    in r 
    in RCTView 
    in RCTView 
    in t 

समस्या स्क्रॉलव्यू के अंदर है। अगर मैं स्क्रॉलव्यू को हटा देता हूं तो यह चला जाता है। मेरा कोड स्निपेट यहाँ है।

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, 
}, 
}); 

उत्तर

6

यह बग uglify-es 3.3.X के कारण होता है जिसका उपयोग रिलीज़ संस्करण बनाते समय किया जाता है।

अपने package.json को यह ब्लॉक जोड़ें:

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

मैं दोनों एक्सपो पर प्रकाशित करने और एक स्टैंडअलोन एप्लिकेशन बनाने और यह एक आकर्षण की तरह अब काम कर रहा है की कोशिश की।

+0

मैं GitHub पर इस समाधान देखा, लेकिन किसी भी तरह यह मेरी मदद नहीं की। क्या मुझे कोई कैश साफ़ करना चाहिए या ऐसा कुछ चाहिए? –

+0

अपनी प्रोजेक्ट, node_modules \ uglify-es \ package.json की जांच करें, इसके संस्करण की जांच करें। यदि यह अभी भी 3.3.एक्स संस्करण है, तो आप uglify-es फ़ोल्डर को हटा सकते हैं और फिर 'yarn' चला सकते हैं, फिर XDE में, आप सहायता-> XDE कैश साफ़ करें पर क्लिक कर सकते हैं –

+0

मेरे लिए काम करता है, धन्यवाद। –

0

मुझे लगता है कि अपने कोड एक FlatList साथ बहुत सरल हो जाएगा, फिर भी आपकी समस्या को इस पद्धति में हो सकता है: renderCurrencies()

कोशिश यह करने के लिए इसे बदलने के लिए:

renderCurrencies =() = > {

शायद प्रोप नहीं ढूंढ रहा है। क्या आपको लॉग में कोई अन्य समस्या दिखाई देती है? यदि इससे मदद नहीं मिलती है, तो समस्या को डीबग करें और पता लगाएं कि (इस) में उस विधि के अंदर क्या है।

नोट: मैंने अभी तक एक्सपो के साथ काम नहीं किया है।

+0

मैं कोशिश की है वापसी सिर्फ renderCurrencies विधि से है, लेकिन कोई किस्मत। तो समस्या इस विधि के अंदर नहीं है। FlatList (टिप के लिए धन्यवाद) भी कोशिश की, लेकिन एक ही त्रुटि है। –

4

एक ही समस्या थी। इस को हल करने रास्ता:

परिवर्तन

this._subscribableSubscriptions.forEach(

को
this._subscribableSubscriptions && this._subscribableSubscriptions.forEach(
उस फ़ाइल में

:

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

@kykapetak क्या आपने एक्सपो के साथ कोशिश की? मुझे लगता है कि यह एपीके को उनके पक्ष से नोड मॉड्यूल के साथ बनाता है, इसलिए मेरी मदद नहीं करें। –

+1

@ KyKaPeTuk के कोड परिवर्तन ने मेरे लिए समस्या के आसपास काम किया। मैं सीआरएनए या एक्सपो (इस तरह के कारणों से) का उपयोग नहीं कर रहा हूं। प्रतिक्रिया देशी Github reponsitory पर एक धागा है: https://github.com/facebook/react-native/issues/17348 – ChillyPenguin

1

धन्यवाद, @kykapetuk और @chillypenguin। ऐसा लगता है कि यह प्रतिक्रिया मूल बग https://github.com/facebook/react-native/issues/17348 है। एक्सपो के मामले में हम @kykapetuk वर्कअराउंड का उपयोग नहीं कर सकते हैं, क्योंकि एपीके एक्सपो सर्वर पर बनाता है। मेरे लिए वर्तमान कामकाज - एक्सपो का उपयोग न करें। शायद, एक और संस्करण प्रतिक्रिया-मूल पुस्तकालय का उपयोग करने के लिए यहां संभावित समाधान।

0

प्रतिक्रिया मूल 0.5.1 में एक बग हो सकता है।

मैं मूल फ़ाइल परियोजना/node_modules प्रतिक्रिया/प्रतिक्रिया देशी/पुस्तकालय/अवयव/रूप से सदस्यता पर लाइन 33 पर चर this._subscribableSubscriptions मूल्यांकन द्वारा यह तय की।js

इस बदलना:

this._subscribableSubscriptions.forEach(
इस के लिए

:

this._subscribableSubscriptions && this._subscribableSubscriptions.forEach(

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

+0

'node_modules' में फ़ाइलों को संपादित करना कभी भी एक अच्छा विचार नहीं है, क्योंकि यह लाइब्रेरी के अगले अपडेट द्वारा ओवरराइड किया जाएगा –

संबंधित मुद्दे