मैं एक बग को खत्म करने की कोशिश कर रहा हूं जो स्प्लैश स्क्रीन खोलने के बाद मेरे रिएक्ट नेटिव 0.53.3 एप्लिकेशन को क्रैश कर रहा है।

Environment:
  OS: macOS High Sierra 10.13.6
  Node: 11.10.1
  Yarn: 1.10.1
  npm: 6.7.0
  Watchman: 4.7.0
  Xcode: Xcode 10.1 Build version 10B61
  Android Studio: 3.4 AI-183.5429.30.34.5452501

Packages: (wanted => installed)
  react: 16.2.0 => 16.2.0
  react-native: 0.53.3 => 0.53.3

MacOS console से मैं यह त्रुटि संदेश प्राप्त करने में सक्षम था:

Unhandled JS Exception: Cannot create styled-component for component: [object Object]

इस एप्लिकेशन में एकमात्र स्थान जहां styled-component का उपयोग किया जा रहा है, यहां package-lock.json है:

"styled-components": {
      "version": "2.4.1",
      "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-2.4.1.tgz",
      "integrity": "sha1-ZjvQSF1LarRvlGIQ3APSOY0a3nQ=",
      "requires": {
        "buffer": "^5.0.3",
        "css-to-react-native": "^2.0.3",
        "fbjs": "^0.8.9",
        "hoist-non-react-statics": "^1.2.0",
        "is-plain-object": "^2.0.1",
        "prop-types": "^15.5.4",
        "stylis": "^3.4.0",
        "supports-color": "^3.2.3"
      },

और यहाँ:

"react-native-material-tabs": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/react-native-material-tabs/-/react-native-material-tabs-3.5.0.tgz",
      "integrity": "sha512-OSni2m2rcxiIYd082fjjroRrU8o/8pZlP3Ok/m244Gl9vUmhyj5WVeTgSYODjmHksQ9IIF2/sZurZcy3DawF7A==",
      "requires": {
        "prop-types": "^15.5.10",
        "styled-components": "^2.3.0"
      }
    },

ऐसा लगता है कि यह react-native-material-tabs की निर्भरता हो सकती है? यही एकमात्र पुस्तकालय है जिसका वास्तव में उपयोग किया जा रहा है, विशेष रूप से, MaterialTabs:

import MaterialTabs from 'react-native-material-tabs';

और यहां लागू किया गया:

render() {
    return (
      <View style={styles.container}>
        {Platform.OS === 'android' && (
          <MaterialTabs
            uppercase={false}
            items={this.props.tabNames}
            selectedIndex={this.state.selectedIndex}
            onChange={this._selectTab}
            barColor={v2Colors.charcoalDark}
            indicatorColor={v2Colors.green}
            activeTextColor={v2Colors.white}
            inactiveTextColor={v2Colors.gray}
            textStyle={{
              fontSize: moderateScale(14, 0.2),
              ...v2Fonts.GothamRegular,
            }}
          />
        )}
        {Platform.OS === 'ios' && (
          <View style={styles.iOSTabsWrapper}>
            {this.props.tabNames.map((tabName, index) => {
              const tabWrapperStyles = [styles.tabWrapper];
              const tabTextStyles = [styles.tabText];
              if (index === 0) {
                tabWrapperStyles.push(styles.tabWrapperFirst);
              } else if (index === this.props.tabNames.length - 1) {
                tabWrapperStyles.push(styles.tabWrapperLast);
              }

ऐप क्रैश हो जाता है इसलिए कोई कंसोल लॉगिंग नहीं है जहां तक ​​​​मुझे पता है मैं कर सकता हूं। मुझे ईमानदारी से यकीन नहीं है कि मैं सही रास्ते पर हूं। क्या किसी को यह समस्या पहले हुई है? या क्या आप डिबग करने का एक तरीका सुझा सकते हैं यदि समस्या वास्तव में MaterialTabs के अंदर के प्रॉप्स के साथ है, क्योंकि ऐप के मूल रूप से दुर्घटनाग्रस्त होने के कारण मेरे पास कंसोल तक पहुंच नहीं है।

इसलिए मैंने आगे बढ़कर <MaterialTabs /> के अंदर प्रॉप्स पर टिप्पणी की और निश्चित रूप से पर्याप्त त्रुटि दूर हो गई, लेकिन एप्लिकेशन अभी भी क्रैश हो रहा है, इस बार केवल <FBApplicationProcess: 0x7ff4da65ddd0; appName (com.nfib.appName); pid: 11010> crashed. के अलावा और कुछ नहीं है।

दूसरी त्रुटि जो मुझे मिलती है वह है Module AppRegistry is not a registered callable module (calling runApplication)

लेकिन वह index.ios.js के अंदर के कोड की बात कर रहा है और जब तक मैं गलत नहीं हूं इसमें कुछ भी गलत नहीं है:

import {AppRegistry} from 'react-native';
import KeyboardManager from 'react-native-keyboard-manager';
import AppName from './App';

KeyboardManager.setToolbarPreviousNextButtonEnable(true);

AppRegistry.registerComponent('AppName', () => AppName);

वही त्रुटि, भले ही मैंने styled-components सहित react-native-material-tabs से संबंधित सब कुछ हटा दिया हो, मुझे अभी भी मैकोज़ कंसोल में वह त्रुटि मिल रही है जब मैं निरंतर क्रैशिंग ऐप खोलने का प्रयास करता हूं।

हाल ही में, मैंने पूरे घटकों और स्क्रीन पर व्यवस्थित रूप से टिप्पणी करके एक विभाजन और जीत का दृष्टिकोण लिया है, लेकिन इस प्रकार अब तक मुझे मैकोज़ कंसोल में वही त्रुटि मिल रही है।

क्या समस्या मेरे main.jsbundle में हो सकती है?

मुझे पता चल रहा है कि इससे कोई फर्क नहीं पड़ता कि मैं किस शाखा में स्विच करता हूं, यहां तक ​​​​कि जिन शाखाओं पर मैंने हफ्तों में काम नहीं किया है, ऐप सिम्युलेटर के अंदर मूल रूप से दुर्घटनाग्रस्त हो जाता है। ऐसा नहीं होना चाहिए।

इसलिए मैंने मैकोज़ कंसोल में विशेष रूप से ~/Library/Logs पर गहराई से देखने का फैसला किया, जहां ऐप स्वयं क्रैश होने पर लॉग होना चाहिए और मुझे यह लाइन मिली:

BUG in libdispatch client: mach_recv

7
Daniel 20 जून 2019, 22:10

1 उत्तर

सबसे बढ़िया उत्तर

कुछ बिंदु पर मैंने पेश किया जो मैं केवल अनुमान लगा सकता हूं कि जब मैंने अपग्रेड करने का प्रयास किया तो निर्भरता बग मेरा अनुमान है। मेरे पास संस्करण ०.५३.३ के साथ एक कार्यशील अनुप्रयोग का एक स्नैपशॉट था जिसे मैंने अलग रखा था।

मुझे उसके साथ भी समस्या हो रही थी जब तक कि एक सहयोगी ने सुझाव नहीं दिया कि मैं Detox संस्करण को 8.x.x से 12.0.0 में अपग्रेड कर दूं क्योंकि यह Xcode 10.1 के साथ अच्छा नहीं खेल रहा था।

मैंने ऐसा किया और ऐप अब क्रैश नहीं हो रहा था।

1
Daniel 25 जून 2019, 22:41