나는 현재 React-Native 튜토리얼을 진행하고 있습니다. 시작하기 자습서로 시작하여 새로운 반응 기본 프로젝트를 만들고 장치에서 프로젝트를 성공적으로 실행할 수있었습니다.
그런 다음 Props tutorial 을 시작하고 코드 스 니펫을 복사하고 프로젝트를 다시 실행하려고 시도했으며 화면에 다음 오류 메시지가 표시되었습니다.
나는 현재 React-Native 튜토리얼을 진행하고 있습니다. 시작하기 자습서로 시작하여 새로운 반응 기본 프로젝트를 만들고 장치에서 프로젝트를 성공적으로 실행할 수있었습니다.
그런 다음 Props tutorial 을 시작하고 코드 스 니펫을 복사하고 프로젝트를 다시 실행하려고 시도했으며 화면에 다음 오류 메시지가 표시되었습니다.
답변:
프로젝트 이름과 등록 된 구성 요소가 일치하지 않아 오류가 발생한 것 같습니다.
하나의 이름으로 프로젝트를 시작했습니다. 즉
react-native init AwesomeApp
그러나 index.ios.js 파일에서 다른 구성 요소를 등록하십시오
AppRegistry.registerComponent('Bananas', () => Bananas);
이 때 해야 할
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
고치십시오.
moduleName:@"AwesemeApp"
을 위해 AppDelegate.m 파일에서 행을 변경할 수 있습니다
대부분의 경우 문제는 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>
? 덕분에 다른 방법으로
start
한이 명령은 패키지 서버를 실행하므로 이미 응용 프로그램을 컴파일 한 경우을 수행 할 필요가 없습니다 run-<platform>
.
수정 MainActivity
같이,
@Override
protected String getMainComponentName() {
return "Bananas"; // here
}
내 솔루션은 "AppDelegate.m"의 모듈 이름을 변경하는 것입니다
...에서
moduleName:@"AwesomeProject"
에
moduleName:@"YourNewProjectName"
프로젝트에서 app.json 파일을 확인하십시오. appKey가없는 경우 추가해야합니다.
{
"expo": {
"sdkVersion": "27.0.0",
"appKey": "mydojo"
},
"name": "mydojo",
"displayName": "mydojo"
}
app.json 파일에서 다음을 변경 하여이 문제를 해결했습니다. 대문자로 인해이 오류가 발생했습니다.
에서:
{
"name": "Nameofmyapp",
...
}
에:
{
"name": "nameofmyapp",
...
}
오히려에서 이름을 변경하는 대신 AppRegistry
,
react-native init Bananas를 실행하면 Bananas 프로젝트의 반응 상용구 코드가 생성 AppRegistry.registerComponent
되고 바나나를 자동으로 가리 킵니다.
AppRegistry.registerComponent('Bananas', () => Bananas);
해결책 중 하나가 저에게 효과적이었습니다. 다음 프로세스를 종료하고 반응 네이티브 실행 안드로이드를 다시 실행해야했습니다.
노드 ./local-cli/cli.js 시작
나는 같은 문제가 있었다. 안드로이드 용 반응 네이티브 앱을 만드는 데 Windows를 사용하고 있었고 동일한 오류가 발생했습니다. 다음은 효과가 있습니다.
sdk.dir = C : \ Users \ USERNAME \ AppData \ Local \ Android \ sdk
앱을 정상적으로 저장하고 실행하십시오. 그것은 나를 위해 일했다.
내 경우 (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
합니다.
위의 내용을 모두 읽은 후에 다른 이유가있을 수 있습니다.
나의 경우에는:
반응 네이티브 클리닉 : 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);
이것은 나를 위해 그것을 해결
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"
},