प्रतिक्रिया-मूल: आवेदन में त्रुटि दर्ज नहीं की गई है


166

मैं वर्तमान में रिएक्ट-नेटिव ट्यूटोरियल के माध्यम से जा रहा हूं। मैंने गेटिंग स्टार्ट ट्यूटोरियल के साथ शुरू किया, जहां मैंने एक नई प्रतिक्रिया देशी प्रोजेक्ट बनाई और अपने डिवाइस पर प्रोजेक्ट को सफलतापूर्वक चलाने में सफल रहा।

मैंने फिर प्रॉपर ट्यूटोरियल शुरू किया , मैंने कोड स्निपेट कॉपी किया और फिर से प्रोजेक्ट चलाने की कोशिश की और मेरी स्क्रीन पर निम्न त्रुटि संदेश दिखाई दिया:


क्या आप अपना कोड साझा कर सकते हैं?
जगदीश उपाध्याय

जवाबों:


435

मुझे लगता है कि यह प्रोजेक्ट और आपके पंजीकृत घटक के नाम से मेल नहीं खाने के कारण हुई एक त्रुटि है।

आपके पास एक नाम के साथ परियोजना है, अर्थात

react-native init AwesomeApp

लेकिन आपके index.ios.js फ़ाइल में आप अन्य घटक को पंजीकृत करते हैं

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

जब होना ही चाहिए

AppRegistry.registerComponent('AwesomeApp', () => Bananas);

इसे ठीक करने का प्रयास करें।


7
"केले" कुछ Android के लिए कैसे काम करता है। लेकिन यह IOS पर नहीं है।
सुमित कुशवाहा

92
यदि घटक नाम से मेल खाता है तो भी उसी समस्या का सामना करने वाले व्यक्ति के लिए -> सुनिश्चित करें कि आपके पास किसी अन्य टर्मिनल में चलने वाली कोई अन्य प्रतिक्रिया-मूल / नोड प्रक्रिया नहीं है।
नीलेश

1
मेरे अनुभव से, एक सिस्टम रिबूट ने चीजों को सॉर्ट किया ... जितना अजीब लगता है।
कायोट

ट्यूटोरियल को वर्तमान में "AwesomeProject" कहा जाता है
एडम जी

2
और moduleName:@"AwesemeApp"
भयानक

42

ज्यादातर बार समस्या यह है कि आपके पास एक और है react-native start (यानी रिएक्टिव नेटिव पैकर) सर्वर या तो किसी अन्य टर्मिनल या TMUX के दूसरे टैब पर चल रहा होता है (यदि आप TMUX का उपयोग कर रहे हैं)।

आपको उस प्रक्रिया को खोजने और इसे बंद करने की आवश्यकता है, इसलिए react-native run-iosउदाहरण के लिए चलने के बाद , यह एक नया पैकर सर्वर स्थापित करेगा जो उस विशिष्ट एप्लिकेशन के लिए पंजीकृत है।

बस उस प्रक्रिया का उपयोग करके खोजें:

ps aux | grep react-native

प्रक्रिया आईडी (पीआईडी) ढूंढें और killकमांड (जैसे kill -9 [PID]) का उपयोग करके पैकेजर प्रक्रिया को मार दें । आपको launchPackager.commandमैकओएस में ऐप ढूंढना चाहिए , अन्य ऑपरेटिंग सिस्टम के बारे में निश्चित नहीं।

फिर run-ios(या Android) फिर से चलाने की कोशिश करें। आपको नया पैकर सर्वर चलाने के बाद नया रास्ता देखने में सक्षम होना चाहिए, जैसे:

Looking for JS files in
   /Users/afshin/Desktop/awesome-app 

यह काम करता है, भले ही मैं चलाऊं react-native start --port <otherport>, क्या मुझे react-native run-<platform>दूसरे तरीके से चलना चाहिए ?, धन्यवाद
सेबस्टियन पाल्मा

@ सेबेस्टियनपाल्मा जहाँ तक मुझे पता है, startकमांड पैकर सर्वर चलाता है इसलिए यदि आपने पहले ही अपना आवेदन संकलित कर लिया है, तो करने की कोई आवश्यकता नहीं है run-<platform>
अफशीन मेहरबानी

32

MainActivityइस तरह संशोधित करें,

@Override
protected String getMainComponentName() {
    return "Bananas"; // here
}

2
बिल्कुल सही! यह वास्तव में मेरी समस्या थी, हालांकि इसे संशोधित करने के बजाय मैंने AppRegistry.registerComponent को संशोधित किया है
Sijav

Ios के बारे में क्या?
दिनेश आर राजपूत

+1। मुझे आश्चर्य होता है कि सीएलआई क्यों पूछता है कि क्या मैं एंड्रॉइड / आईओएस संस्करण को एक अलग नाम देना चाहता हूं, जब यह केवल मेरी परियोजना को काम नहीं करेगा और मुझे इसे वापस बदलना होगा।
स्पर्श करें

मैंने संशोधित किया था app.js
रोल

28

मेरा समाधान "AppDelegate.m" में मॉड्यूल नाम है

से moduleName:@"AwesomeProject"

सेवा moduleName:@"YourNewProjectName"


इससे मेरा मुद्दा ठीक हो गया। धन्यवाद!
कोरी मैकएबॉय

मेरे लिए रिएक्ट नेटिव से आईओएस सिम्युलेटर चलाने का काम किया!
एमिलियो

हां, यह मेरी मदद करता है। एक अतिरिक्त संकेत: यदि आप XCode का उपयोग करते हैं, तो सुनिश्चित करें कि आपने अपने ऐप-नाम (प्रोजेक्ट -> लक्ष्य -> ​​DisplayName) के लिए सही नाम सेट किया है
suther

17

सबसे पहले आपको अपना आवेदन शुरू करना होगा:

react-native start

फिर, आपको अपना आवेदन नाम registerComponent के पहले तर्क के रूप में सेट करना होगा।

यह बढ़िया काम करता है।

AppRegistry.registerComponent('YourProjectName', () => YourComponentName);

8

कृपया अपने app.json फ़ाइल को प्रोजेक्ट में देखें। अगर लाइन appKey नहीं है, तो आपको इसे जोड़ना होगा

{
  "expo": {
    "sdkVersion": "27.0.0",
    "appKey": "mydojo"
  },
  "name": "mydojo",
  "displayName": "mydojo"
}

3
पिछले 24 घंटों के लिए इस त्रुटि के साथ ध्यान रहे। इससे मेरा मुद्दा ठीक हो गया। धन्यवाद!
बालाजी कीर्तेश्वरन

7

मेरे मामले में MainActivity.java में यह रेखा है जो तब छूटी थी जब मैंने react-native-renamecli (NPM से) का उपयोग किया था

protected String getMainComponentName() {
    return "AwesomeApp";
}

जाहिर है हां आपके ऐप के नाम पर इसका नाम बदल जाएगा।


4

मुझे लगता है कि नोड सर्वर किसी अन्य फ़ोल्डर से चल रहा है। तो इसे मारें और वर्तमान फ़ोल्डर में चलाएं।

रनिंग नोड सर्वर खोजें: -

lsof -i :8081

किल रनिंग नोड सर्वर: -

kill -9 <PID>

उदाहरण के लिए: -

kill -9 1653

वर्तमान प्रतिक्रिया देशी फ़ोल्डर से नोड सर्वर शुरू करें: -

react-native run-android


3

मेरे पास एक ही समस्या थी और मेरे लिए मूल कारण यह था कि मैं किसी अन्य प्रतिक्रिया-मूल फ़ोल्डर (AwesomeApp) से पैकर को चलाता था (प्रतिक्रिया-मूल प्रारंभ), जबकि मैंने एक अन्य फ़ोल्डर में एक और प्रोजेक्ट बनाया।

नए ऐप की डायरेक्टरी से पैकर को चलाने से इसे हल किया गया।


1

यह रूट घटक नाम लोअरकेस के साथ शुरू होने के कारण भी हो सकता है।

इसे ठीक करें या फिर एक बार PascalCase नाम से प्रोजेक्ट बनाएं।

उदाहरण के लिए नए HelloWord प्रज्वलित करें


1

दिए गए सभी जवाब मेरे काम नहीं आए।

मेरे पास एक और टर्मिनल में एक और नोड प्रक्रिया चल रही थी, मैंने उस कमांड टर्मिनल को बंद कर दिया और सब कुछ उम्मीद के मुताबिक काम किया।


1

आपको इसे index.android.js / index.ios.js में पंजीकृत करना होगा

इस तरह:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

AppRegistry.registerComponent('test', () => app);

1

मैंने app.json फ़ाइल में निम्न को बदलकर इसे हल किया। ऐसा प्रतीत होता है कि कैपिटल लेटर इस त्रुटि को फेंक रहा था।

से:

{
  "name": "Nameofmyapp",
  ...
}

सेवा:

{
  "name": "nameofmyapp",
  ...
}

0

बल्कि नाम बदलने में AppRegistry ,

प्रतिक्रिया-देशी init केले चलाएँ, यह केले परियोजना के लिए प्रतिक्रिया बॉयलरप्लेट कोड बनाएगा और AppRegistry.registerComponentस्वचालित रूप से केले को इंगित करेगा

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

0

गैर-समाधानों ने मेरे लिए काम किया। मुझे निम्नलिखित प्रक्रिया को मारना पड़ा और प्रतिक्रिया-मूलक रन-एंड्रॉइड को फिर से चलाना पड़ा और इसने काम किया।

नोड ./Local-cli/cli.js प्रारंभ


1
निम्नलिखित प्रक्रियाएं
बिगमाडॉल्फ

@bigmadwolf नोड ./local-cli/cli.js शुरू
जी थाबिट

0

मुझे भी यही समस्या थी। मैं एंड्रॉइड के लिए एक प्रतिक्रिया देशी ऐप बनाने के लिए विंडोज का उपयोग कर रहा था और वही त्रुटि हो रही थी। यहाँ क्या काम किया है।

  • अपने रूट में फ़ोल्डर ANDROID पर नेविगेट करें ।
  • नाम के साथ एक फ़ाइल बनाएँ: local.properties
  • इसे संपादक में खोलें और लिखें:

sdk.dir = C: \ Users \ USERNAME \ AppData \ Local \ Android \ sdk

  • USERNAME को अपनी मशीन के नाम से बदलें।

एप्लिकेशन को सामान्य रूप से सहेजें और चलाएं। मेरे लिए यही काम किया।


0

जब index.js में यह समस्या दिखाई देगी , तो आपने ऐप को उस नाम से अलग नाम दिया है जिसे आपने एंड्रॉइड / एनओएस पैकेज के लिए दिया था ; संभवत: ऐसा तब हुआ जब आपने ऐप को हटा दिया है। इसलिए सुनिश्चित करें कि कॉल करते समय AppRegistry.registerComponent('someappname', () => App), someappname का उपयोग मूल पैकेज या वाइसवेरा के लिए भी किया जाता है।


0

मुझे पता चला कि मेरे मामले में (विंडोज़ 10 ओएस) समस्या कहां थी, लेकिन यह लिनक्स में भी मदद कर सकता है (आप कोशिश कर सकते हैं)।

में windows power shell, जब आप निम्नलिखित कमांड को क्रियान्वित किसी एप्लिकेशन (पीसी बूट के बाद पहली बार) चलाना चाहते हैं,

react-native run-android

यह node process/JS serverदूसरे में शुरू होता है console panel, और आप इस त्रुटि का सामना नहीं करते हैं। लेकिन, जब आप चलाना चाहते हैं कि किसी अन्य एप्लिकेशन , आप चाहिए की जरूरत है बंद है कि पहले से चल रहा JS server console panel । और फिर उसी एप्लिकेशन से किसी अन्य एप्लिकेशन के लिए उसी कमांड को निष्पादित करें power shell, जो कमांड स्वचालित रूप से एक और नया जेएस सर्वर शुरू करेगा इस ऐप के लिए , और आप इस त्रुटि का सामना नहीं करेंगे।

आपको किसी अन्य ऐप को चलाने के लिए बंद करने और फिर से खोलने की आवश्यकता नहीं है power shell, आपको किसी अन्य ऐप को चलाने के लिए बंद node console करने की आवश्यकता है ।


0

उपरोक्त सभी पढ़ने के बाद, मैंने पाया है कि इसके लिए एक और कारण हो सकता है।

मेरे मामले में:

प्रतिक्रिया-मूल-क्लि: 2.0.1

प्रतिक्रिया-मूल: 0.60.4

और निम्नलिखित संरचना:

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

पहले यह ध्यान दिया जाना चाहिए कि जब मेट्रो बिल्डर (प्रतिक्रिया-देशी रन-एंड्रॉइड) द्वारा निर्मित रन करते हैं, तो index.android एंड्रॉइड स्टूडियो में अपडेट नहीं होता है, इसलिए इसे मैन्युअल रूप से करना होगा। इसके अलावा Android स्टूडियो में "पढ़ना" नहीं है

app.json (index.js के साथ डिफ़ॉल्ट रूप से बनाया गया, जिसका नाम बदलकर index.android.js):

 {
    "name": "authApp",
    "displayName": "authApp"
 }

और इस तरह से

(मेरे मामले में)

import {authApp as appName} from './app.json';

इस तथ्य का कारण है कि एंड्रॉइड स्टूडियो को पता नहीं है कि ओटरपीई किस का संदर्भ देता है। मैं एप्लिकेशन का नाम उसके स्ट्रिंग नाम के साथ आने वाले क्षण के लिए ठीक करता हूं और app.json से उस आयात का उपयोग नहीं कर रहा हूं:

AppRegistry.registerComponent('authApp', () => MyApp);

0

इससे मेरे लिए हल हो गया

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

तो मेरी index.jsफाइल

import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('main', () => App);

और मेरी package.jsonफाइल:

"dependencies": {
    "react": "^16.13.1",
    "react-dom": "~16.9.0",
    "react-native": "~0.61.5"
},

0

इस समाधान ने डिबगिंग के 2 दिनों के बाद मेरे लिए काम किया। इसे बदलो :

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

सेवा

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