रिएक्ट-नेटिव: मॉड्यूल ऐप्रीजिस्ट्री एक पंजीकृत कॉल करने योग्य मॉड्यूल नहीं है


114

मैं वर्तमान में एंड्रॉइड एमुलेटर पर ईएस 6 प्रतिक्रिया-देशी-वेबपैक-सर्वर प्राप्त करने की कोशिश कर रहा हूं । अंतर यह है कि मैंने अपने को अपग्रेड किया है package.jsonऔर build.gradeप्रतिक्रिया का उपयोग किया है 0.18.0, और मुझे यह त्रुटि बूट पर हो रही है। जहाँ तक मैं जानता हूँ कि AppRegistryसही ढंग से आयात किया गया है। यहां तक ​​कि अगर मैं कोड टिप्पणी करने के लिए थे, यह त्रुटि अभी भी आती है। यह बिना किसी समस्या के iOS पर काम करता है।

मैं क्या गलत कर रहा हूं?

संपादित करें: 0.18.0 का समर्थन करने वाले अन्य बॉयलरप्लेट्स की कोशिश करने के बाद, मैं अभी भी उसी मुद्दे पर आ रहा हूं।

यहां छवि विवरण दर्ज करें


मैं 0.19 और 0.20 के साथ एक ही समस्या आ रही है, मैंने सब कुछ करने की कोशिश की है, लेकिन कोई भाग्य नहीं है: '(कोई भी अपडेट @ डस्टिन?
6

@Shprink मुझे यह समस्या 0.20 के साथ भी मिल रही है। इस मुद्दे को भी प्राप्त कर रहा हैOne of the sources for assign has an enumerable key on the prototype chain.
जोश फेरारा

जवाबों:


58

मैं सिर्फ प्रतिक्रिया-मूल के लिए अपग्रेड किया गया 0.18.1था जो 0.19.0-rcपूर्व-रिलीज़ संस्करण के साथ कुछ सहकर्मी निर्भरता के मुद्दों को कठिन बना रहा था ।

आपके सवाल पर वापस, मैंने क्या किया

  1. cd android
  2. sudo ./gradlew clean( यहां कितनी साफ सफाई है इसके बारे में अधिक जानकारी )

फिर वापस काम कर रहे निर्देशिका और चलाने के लिए react-native run-android

आपको उस अपग्रेड के बाद भी अपना npm पुनः आरंभ करना चाहिए।

उम्मीद है इससे आपका काम बनेगा।


3
मैं gradlew कमांड चलाने की कोशिश कर रहा हूं, लेकिन यह बताता रहता है कि मुझे ANDROID_HOMEअपने रास्ते में होने के बावजूद Android SDK नहीं मिल रहा है । मैंने local.propertiesफ़ाइल भी साथ जोड़ दी sdk.dir=। कोई विचार?
steezeburger

43
जब कुछ करने की सलाह देते हैं sudo ./gradlew clean, तो यह उल्लेख करना अच्छा होगा कि यह एक बहुत बड़ा ऑपरेशन है, जो स्पष्ट रूप से फिर से डाउनलोड होता है और संपूर्ण ग्रेड वितरण को बहाल करता है।
स्ज़ेकपैन होल्सिज़ेस्की

1
त्रुटि प्राप्त करना मॉड्यूल HMRClient एक पंजीकृत कॉल करने योग्य मॉड्यूल (कॉलिंग सक्षम) नहीं है। मैं अपने परिवर्तनों को जेएस फाइलों में नहीं देख पा रहा हूं :(
दिनेश आर राजपूत

अपने Android SDK स्थान को खोजने के लिए, Android Studio खोलें और कॉन्फ़िगर करें को हिट करें, आपको सबसे ऊपर एक रास्ता दिखाई देगा, जो संभवतः कुछ इस तरह है:/Users/karim/Library/Android/sdk
करीम मोर्टबिट


15

मेरे पास iOS पर एक ही मुद्दा था और मेरे लिए कारण यह था कि मेरा index.ios.js गलत था (क्योंकि मैंने इसकी सामग्री को देखे बिना किसी एक उदाहरण को कॉपी-पेस्ट किया था), यह एक मॉड्यूल निर्यात घोषणा के साथ समाप्त हो रहा था।

exports.title = ...
exports.description = ...
module.exports = MyRootComponent;

उम्मीद के बजाय

AppRegistry.registerComponent('MyAppName', () => MyRootComponent);

आप Android पर index.android.js के साथ एक ही मुद्दा हो सकता है मुझे लगता है।


13

इस समस्या का एक मुख्य कारण हो सकता है कि आपने एक प्लगइन कहाँ स्थापित किया होगा और इसे लिंक करना न भूले

इसे इस्तेमाल करे:

react-native link

अपना ऐप फिर से चलाएं।

आशा है कि यह मदद करेगा। कृपया मुझे अंदर जाने दें टिप्पणियों । धन्यवाद।


1
react-native linkपैकेज नाम के बिना चल रहा है पदावनत और अगले रिलीज में हटा दिया जाएगा।
हर्षद मडाये

9

मैंने इस मुद्दे को सिर्फ जोड़कर हल किया

import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";  
AppRegistry.registerComponent(appName, () => App);

मेरे index.js के लिए

सुनिश्चित करें कि यह आपके index.js में मौजूद है


3

मेरे लिए मेरी समस्या बंडल करते समय गलत प्रविष्टि-फ़ाइल डाल रही थी ।

मैं अपनी प्रविष्टि-फ़ाइल के रूप में App.js का उपयोग कर रहा था, इसलिए ऐप AppRegistry नहीं खोज सका

सही बात:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

गलत:

react-native bundle --platform android --dev false --entry-file App.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

आपने मेरे दिमाग को बचाया ... यह दिन था कि मैं यह समझने की कोशिश कर रहा था कि अगर मैंने कमांड लॉन्च किया था: react-native bundle --platform android --dev false --entry-file index.js --bundle-output android /app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res सब कुछ काम किया, जबकि अगर मैंने फास्टलेन के साथ प्रकाशित किया तो ऐप इस त्रुटि के साथ क्रैश हो गया: Module AppRegistry is not a registered callable module (calling runApplication) बिल्ड.ग्रेड में मेरे पास, शायद गंदगी थी, एक गलत प्रविष्टि! एक बार फिर धन्यवाद!
नोबडी

3

उम्मीद है कि यह किसी को सिरदर्द से बचा सकता है। मुझे अपनी प्रतिक्रिया-देशी संस्करण को अपग्रेड करने के बाद यह त्रुटि मिली। भ्रामक रूप से यह केवल चीजों के एंड्रॉइड पक्ष पर दिखाई दिया।

मेरी फ़ाइल संरचना में a index.ios.jsऔर a शामिल हैं index.android.js। दोनों में कोड है:

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

मुझे जो करना था, उसमें android/app/src/main/java/com/{projectName}/MainApplication.javaबदल indexगया index.android:

@Override
protected String getJSMainModuleName() {
    return "index.android"; // was "index"
}

फिर में app/build/build.gradle, बदलने entryFileसे index.jsकरने के लिएindex.android.js

project.ext.react = [
    entryFile: "index.android.js" // was index.js"
]

3

मेरे लिए बस कंप्यूटर को पुनरारंभ करने से यह तय हो गया। (मेरी त्रुटि थी "मॉड्यूल ऐप्रीजिस्ट्री एक पंजीकृत कॉल करने योग्य मॉड्यूल नहीं है (रनिंग अपचयन) js इंजन: heses)

एक और शीर्ष उत्तर जो यहां याद आ रहा है और हो सकता है कि काम करना सिर्फ नोड प्रक्रियाओं को मारने के लिए था:

killall -9 node

[ मॉड्यूल AppRegistry पंजीकृत कॉल करने योग्य मॉड्यूल नहीं है (कॉल रन अप्लीकेशन) ]


2

मुझे पता नहीं क्यों, लेकिन जब मैं index.js फ़ाइल से AppRegistry.registerComponent को स्थानांतरित करता हूं, जो index.android.js में शामिल है, तो index.android.js के अंदर सीधे रहते हैं, यह काम करने लगता है।


1

यदि आप कुछ उदाहरणों का उपयोग कर रहे हैं तो वे काम नहीं कर सकते हैं

यहाँ स्क्रॉल दृश्य के लिए मेरा संस्करण है

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */

import React, {
  AppRegistry,
  Component,
  StyleSheet,
  Text,
  View,
  ScrollView,
  TouchableOpacity,
  Image
} from 'react-native';

class AwesomeProject extends Component {
  render() {
    return (
        <View>
          <ScrollView
            ref={(scrollView) => { _scrollView = scrollView; }}
            automaticallyAdjustContentInsets={false}
            onScroll={() => { console.log('onScroll!'); }}
            scrollEventThrottle={200}
            style={styles.scrollView}>
            {THUMBS.map(createThumbRow)}
          </ScrollView>
          <TouchableOpacity
            style={styles.button}
            onPress={() => { _scrollView.scrollTo({y: 0}); }}>
            <Text>Scroll to top</Text>
          </TouchableOpacity>
        </View>
    );
  }
}

var Thumb = React.createClass({
  shouldComponentUpdate: function(nextProps, nextState) {
    return false;
  },
  render: function() {
    return (
      <View style={styles.button}>
        <Image style={styles.img} source={{uri:this.props.uri}} />
      </View>
    );
  }
});

var THUMBS = [
'http://loremflickr.com/320/240?random='+Math.round(Math.random()*10000) + 1,
'http://loremflickr.com/320/240?random='+Math.round(Math.random()*10000) + 1,
'http://loremflickr.com/320/240?random='+Math.round(Math.random()*10000) + 1
];

THUMBS = THUMBS.concat(THUMBS); // double length of THUMBS
var createThumbRow = (uri, i) => <Thumb key={i} uri={uri} />;

var styles = StyleSheet.create({
  scrollView: {
    backgroundColor: '#6A85B1',
    height: 600,
  },
  horizontalScrollView: {
    height: 120,
  },
  containerPage: {
    height: 50,
    width: 50,
    backgroundColor: '#527FE4',
    padding: 5,
  },
  text: {
    fontSize: 20,
    color: '#888888',
    left: 80,
    top: 20,
    height: 40,
  },
  button: {
    margin: 7,
    padding: 5,
    alignItems: 'center',
    backgroundColor: '#eaeaea',
    borderRadius: 3,
  },
  buttonContents: {
    flexDirection: 'row',
    width: 64,
    height: 64,
  },
  img: {
    width: 321,
    height: 200,
  }
});

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

1

मैंने इसे Genymotion पर अनइंस्टॉल कर दिया। फिर react-native run-androidऐप बनाने के लिए रन करें। और इसने काम किया। दौड़ने से पहले यह प्रयास करें sudo ./gradlew clean, इससे आपका बहुत समय बचेगा।


1

पुनरारंभ पैकेजर ने मेरे लिए काम किया। बस देशी पैकर को मार डालो और इसे फिर से चलाओ।


1

यदि आप Android के साथ खिड़कियों में इस त्रुटि का सामना कर रहे हैं

अपने रूट डायरेक्टरी ऐप फ़ोल्डर को खोलें और एंड्रॉइड फ़ोल्डर में जाएं।

     cd android 
     gradlew clean

अपना ऐप फिर से शुरू करें-देशी रन-एंड्रॉइड

bhooom यह काम करता है


0

मेरे मामले में, मेरे index.jsलॉन्चर गलती से मेरे लॉन्चर js के बजाय मेरे दूसरे js को इंगित करता है, जिसमें शामिल नहीं है AppRegistry.registerComponent()

इसलिए, सुनिश्चित करें index.jsकि कक्षा को पंजीकृत करने के लिए अपनी बात को फ़ाइल करें ।


0

मेरा मुद्दा मेरे inotify max_user_watches को बढ़ाकर तय किया गया था:

sudo sysctl fs.inotify.max_user_watches=1280000

0

मेरे लिए यह प्रतिक्रिया पैकेज के अगले संस्करण पर प्रतिक्रिया-देशी निर्भरता के साथ एक मुद्दा था, जबकि मेरे पैकेज में। पुराने को निर्दिष्ट किया गया था। मेरे प्रतिक्रिया संस्करण को अपग्रेड करने से यह समस्या हल हो गई।


0

मेरे लिए मैं सिर्फ इस तरह से प्रतिक्रिया देशी के साथ जुड़ा: प्रतिक्रिया देशी लिंक


शायद इस पर थोड़ा विस्तार करें।

0

npm start - --reset-cache

संभवतः पोर्ट पहले से ही उपयोग में है। मैं इसी तरह के मुद्दे का सामना करता हूं जब मैं पहली बार प्रतिक्रिया-देशी रन-एंड्रॉइड चलाता हूं और फिर एनपीएम शुरू करता हूं। मैं इसे इस तरह हल करता हूं: सबसे पहले, पोर्ट 8081 में चल रही प्रक्रिया की आईडी प्राप्त करें: sudo lsof -i: 8081


0

मुझे एक्सपो में यह त्रुटि मिली क्योंकि मैंने गलत घटक नाम निर्यात किया था, जैसे

const Wonk = props => (
  <Text>Hi!</Text>
)

export default Stack;

0

मैंने निम्न कार्य करके इस समस्या को हल किया:

  1. सीडी एंड्रॉयड
  2. ./gradlew साफ
  3. टास्ककिल / f / im नोड। ex
  4. Android से app की स्थापना रद्द करें

0

आप विंडोज मशीन का उपयोग कर रहे हैं, तो आपको बस इतना करना cd androidहै तो ./gradlew cleanफिर से चलाने केreact-native run-android

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.