반응 네이티브 : 응용 프로그램이 등록되지 않았습니다 오류


166

나는 현재 React-Native 튜토리얼을 진행하고 있습니다. 시작하기 자습서로 시작하여 새로운 반응 기본 프로젝트를 만들고 장치에서 프로젝트를 성공적으로 실행할 수있었습니다.

그런 다음 Props tutorial 을 시작하고 코드 스 니펫을 복사하고 프로젝트를 다시 실행하려고 시도했으며 화면에 다음 오류 메시지가 표시되었습니다.


코드를 공유 할 수 있습니까?
Jagadish Upadhyay

답변:


435

프로젝트 이름과 등록 된 구성 요소가 일치하지 않아 오류가 발생한 것 같습니다.

하나의 이름으로 프로젝트를 시작했습니다. 즉

react-native init AwesomeApp

그러나 index.ios.js 파일에서 다른 구성 요소를 등록하십시오

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

이 때 해야

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

고치십시오.


7
"바나나"어떻게 안드로이드에 작동합니다. 그러나 IOS에는 없습니다.
Kushwaha Sumit

92
구성 요소 이름이 일치하더라도 동일한 문제에 직면 한 사람의 경우-> 다른 터미널에서 실행중인 다른 반응 네이티브 / 노드 프로세스가 없는지 확인하십시오.
Nilesh

1
내 경험상, 시스템 재부팅으로 인해 사물을 정렬했습니다.
Kayote

튜토리얼은 현재 "AwesomeProject"
AdamG

2
AwesomeApp 대신 바나나를 원하는 사람들 moduleName:@"AwesemeApp"을 위해 AppDelegate.m 파일에서 행을 변경할 수 있습니다
Aequitas

42

대부분의 경우 문제는 react-native start다른 터미널 또는 TMUX의 다른 탭 (TMUX를 사용하는 경우)에서 다른 (즉, React Native Packager) 서버가 실행되고 있다는 것입니다.

해당 프로세스를 찾아서 닫아야하므로 react-native run-ios예를 들어 실행 한 후에 는 해당 특정 응용 프로그램에 등록 된 새로운 패키지 서버를 설정합니다.

다음을 사용하여 해당 프로세스를 찾으십시오.

ps aux | grep react-native

프로세스 ID (PID)를 찾고 kill명령 (예 :)을 사용하여 패키지 프로세스를 종료하십시오 kill -9 [PID]. launchPackager.command다른 운영 체제에 대해서는 잘 모르지만 macOS 에서 앱을 찾아야합니다 .

그런 다음 run-ios(또는 안드로이드)를 다시 실행 하십시오. 새 패키저 서버를 실행 한 후 새 경로를 볼 수 있어야합니다 (예 :

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

내가 실행하는 경우에도 작동 react-native start --port <otherport>, 나는 실행해야 react-native run-<platform>? 덕분에 다른 방법으로
세바스찬 팔마

@ SebastiánPalma 내가 아는 start한이 명령은 패키지 서버를 실행하므로 이미 응용 프로그램을 컴파일 한 경우을 수행 할 필요가 없습니다 run-<platform>.
Afshin Mehrabani

31

수정 MainActivity같이,

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

2
바로 그거죠! 이 문제를 수정하는 대신 AppRegistry.registerComponent를 수정했습니다.
Sijav

Ios는 어떻습니까?
Dinesh R Rajput

+1. CLI가 android / ios 버전에 다른 이름을 지정하여 프로젝트가 작동하지 않고 다시 변경 해야하는 이유를 묻는 이유를 궁금해합니다.
터치

나는 app.js를 수정했다

28

내 솔루션은 "AppDelegate.m"의 모듈 이름을 변경하는 것입니다

...에서 moduleName:@"AwesomeProject"

moduleName:@"YourNewProjectName"


이것은 내 문제를 해결했습니다. 감사!
Cory McAboy

React Native에서 iOS 시뮬레이터를 실행하기 위해 일했습니다!
Emilio

그래, 그것은 나를 도와줍니다. 추가 힌트 : 당신은 엑스 코드를 사용하는 경우, 확인, 당신은 당신의 앱 이름 (-> 대상 -> 표시 이름 프로젝트)에 대한 권리 이름을 설정 한
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 시간 동안이 오류가 발생했습니다. 이것은 내 문제를 해결했습니다. 감사!
Balaji Kartheeswaran

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,

react-native init Bananas를 실행하면 Bananas 프로젝트의 반응 상용구 코드가 생성 AppRegistry.registerComponent되고 바나나를 자동으로 가리 킵니다.

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

0

해결책 중 하나가 저에게 효과적이었습니다. 다음 프로세스를 종료하고 반응 네이티브 실행 안드로이드를 다시 실행해야했습니다.

노드 ./local-cli/cli.js 시작


1
다음 프로세스는 무엇입니까?
bigmadwolf 2019

@bigmadwolf 노드 ./local-cli/cli.js 시작
G. Thabit

0

나는 같은 문제가 있었다. 안드로이드 용 반응 네이티브 앱을 만드는 데 Windows를 사용하고 있었고 동일한 오류가 발생했습니다. 다음은 효과가 있습니다.

  • 루트에서 ANDROID 폴더로 이동 하십시오.
  • 이름이 local.properties 인 파일을 작성하십시오.
  • 편집기에서 열고 다음을 작성하십시오.

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

  • USERNAME을 컴퓨터 이름으로 바꾸십시오.

앱을 정상적으로 저장하고 실행하십시오. 그것은 나를 위해 일했다.


0

index.js에서 android / ios 패키지에 지정한 이름과 다르게 앱 이름을 지정한 경우에도이 문제가 나타납니다 . 아마도 앱을 추출했을 때 이런 일이 발생했을 것입니다. AppRegistry.registerComponent('someappname', () => App)따라서을 호출 할 때 someappname이 기본 패키지 또는 그 반대로도 사용 되는지 확인하십시오 .


0

내 경우 (Windows 10 OS)에서 문제가 발생한 위치를 파악했지만 Linux에서도 도움이 될 수 있습니다 (시도 할 수 있습니다).

에서 windows power shell, 당신은 다음과 같은 명령을 실행하여 응용 프로그램 (PC 부팅 후 처음으로)을 실행하고자 할 때,

react-native run-android

node process/JS server다른에서 시작 console panel하며이 오류가 발생하지 않습니다. 실행할 때, 다른 응용 프로그램을 , 당신은 해야 할 필요가 닫을 것을 이미 실행 JS server console panel . 그런 다음에서 다른 앱에 대해 동일한 명령을 실행하면 power shell해당 명령 이이 앱에 대한 다른 JS 서버 를 자동으로 시작 하므로이 오류가 발생하지 않습니다.

다른 앱을 실행하기 위해 닫았다가 다시 열 필요가 없으며 power shell다른 앱 을 실행 하려면 닫아야 node console 합니다.


0

위의 내용을 모두 읽은 후에 다른 이유가있을 수 있습니다.

나의 경우에는:

반응 네이티브 클리닉 : 2.0.1

반응 네이티브 : 0.60.4

다음 구조 :

여기에 이미지 설명을 입력하십시오

먼저 Metro builder (react-native run-android)가 빌드를 실행할 때 index.android가 Android Studio에서 업데이트되지 않았으므로 수동으로 수행해야합니다. 또한 안드로이드 스튜디오에서 "읽지"않습니다

app.json (index.js와 함께 기본적으로 생성되어 index.android.js로 이름이 바)) :

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

그래서 이렇게

(나의 경우에는)

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

안드로이드 스튜디오가 authApp이 무엇을 참조하는지 알지 못합니다. 문자열 이름으로 앱 이름을 참조하고 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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.