“Invariant Violation : Application AwesomeProject가 등록되지 않았습니다.”정적 jsbundle로 iOS 장치 용으로 빌드 할 때
우선 반응은 모르지만 시뮬레이터 대신 iOS 장치에 배포하는 것이 문서로 수행하기 너무 어렵지 않을 것이라고 생각했습니다. 그것들은 약간 드물었지만 어딘가에 있었고 지금은 붙어 있습니다. main.jsbundle을 만들어 Xcode 프로젝트에 추가하고 AppDelegate.m에서 주석을 제거했습니다.
배포 할 때이 오류가 발생합니다.
2015-03-26 16:13:08.538 AwesomeProject[4753:2477032] >
RCTJSLog> "Running application "AwesomeProject" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF"
2015-03-26 16:13:08.547 AwesomeProject[4753:2477032] >
RCTJSLog> "Error:
stack:
runApplication main.jsbundle:33769
jsCall main.jsbundle:7157
_callFunction main.jsbundle:7404
applyWithGuard main.jsbundle:877
guardReturn main.jsbundle:7206
callFunctionReturnFlushedQueue main.jsbundle:7413
URL: file:///private/var/mobile/Containers/Bundle/Application/DBC0DAF4-B568-4CF5-B156-9EFEE4E7FF4A/AwesomeProject.app/main.jsbundle
line: 1536
message: Invariant Violation: Application AwesomeProject has not been registered."
2015-03-26 16:13:08.723 AwesomeProject[4753:2477032] >
RCTJSLog> "#CLOWNTOWN (error while displaying error): Network request failed"
@krazyeom의 수정 사항 이이 오류와 관련이 없다고 확신합니다. 제 경우에는 이전에 실행 한 테스트 앱에서 실행중인 터미널을 종료하여이 문제를 해결했습니다. 터미널이 혼란스럽고 프로젝트가 더 이상 XCode에로드되지 않은 프로세스에 연결되어있는 것 같습니다. 다음을 시도하십시오.
- React Native에서 생성 한 터미널을 종료합니다.
- XCode를 완전히 종료합니다 (필요하지 않을 수도 있음).
- 모든 것을 다시 열고 다시 실행하십시오.
문제는 콘솔과 관련이 없어야합니다. javascript를 ios 앱에 적절하게 번들하면 dev 서버와 통신하지 않고 번들에서 javascript를 가져옵니다.
오류 메시지에서 주 구성 요소의 이름을 변경했을 수 있습니다. 'AppName'
당신이 안으로 통과 하는지 확인하십시오
AppRegistry.registerComponent('AppName' /* <- */, ... )
@"AppName"
에 대한 귀하 AppDelegate.m
의 요청 과 일치
[[RCTRootView alloc] initWithBundleUrl:...
moduleName:@"AppName" // <-
launchOptions:...
반응 네이티브 서버가 여전히 이전 서버를보고 있기 때문입니다. 먼저 서버를 종료해야합니다.
프로세스를 죽일 수 있습니다.
터미널에서
ps aux | grep react
프로세스를 종료하거나 종료 한 다음
npm start
AppRegistry는 애플리케이션에 대한 진입 점을 정의하고 루트 구성 요소를 제공합니다.
첫 번째 매개 변수가 프로젝트 이름과 일치하지 않습니다.
AppRegistry.registerComponent('AwesomeProject', () => YourMainComponent);
의 첫 번째 매개 변수는 registerComponent
프로젝트 이름이어야하고 두 번째 매개 변수는 루트 반응 구성 요소를 반환하는 익명 함수입니다.
첫 번째 매개 변수가 xcode 프로젝트 이름과 일치하지 않으면 애플리케이션이 등록되지 않았다는 오류가 발생합니다.
범위에 AppRegistry가없는 경우 이와 같이 호출 React.AppRegistry.registerComponent
하거나 AppRegistry
var에 할당 할 수 있습니다.
var {
AppRegistry
} = React;
AppRegistry.registerComponent('abc',() => ***);
는 'abc'
과 동일해야합니다 moduleName:@'abc'
파일 이름에AppDelegate.m
나는 같은 문제가 있었다. AppDelegate의 moduleName 과 AppRegistry.registerComponent에 동일한 이름을 지정하여 문제를 해결했습니다.
If you are running the app with $ react-native run-ios
you will need to rename the moduleName
field in ./ios/[project name]/AppDelegate.m
to match the new name of the project. Refresh the phone simulator and it should show the new code.
Did you change the name of the app that you're registering? I started the app with the name 'tricky', then later changed the name in this line:
AppRegistry.registerComponent('MyNewApp', () => MyNewApp);
and I started getting the invariant error.
I am not fan of closing down everything so I dig this further.
All I had to do is in my terminal window, I ran this command:
../lala/node_modules/react-native/packager/launchPackager.command ; exit;
My project name was "lala" , so find that there is node_modules in your project too.
replace lala with your project name it should work.
If there is an error says port is already in use:
ERROR Packager can't listen on port 8081
Then you have two choices:
- Kill already running program.
- Or Change the port by going into :
../lala/node_modules/react-native/packager/packager.js
then find your port number, example 8081, and replace with the port number that is not in use.
var options = parseCommandLine([{ command: 'port', default: 8082, }, {
Save this file and then run the above command again.
This way I can run multiple react(ors).
Got the same error, restarting everything including the xcode and terminal worked for me.
Reference a nameless person.
it works for me.
I had almost the same problem you currently have a few days ago. For me it was a real device.
From all my research, the solution that worked for me is the following:
- When you launch your app by typing react-native run-android, the error appears.
- So, reach your directory containing "adb.exe" ( for me it was
C:\Users\username\AppData\Local\Android\Sdk\platform-tools\
) - open a terminal from here. And type adb reverse tcp:8081 tcp:8081
- Then, by reloading the app on the phone, it should work.
I got the similar message in the console.
message: Invariant Violation: Application AwesomeProject has not been registered."
I just added REACT_EDITOR=atom
on ~/.bashrc file.
'development' 카테고리의 다른 글
PHP에서 숫자 기호 변경? (0) | 2020.12.13 |
---|---|
json_decode는 웹 서비스 호출 후 NULL을 반환합니다. (0) | 2020.12.13 |
이 C ++ for 루프의 실행 시간에 중요한 차이가있는 이유는 무엇입니까? (0) | 2020.12.13 |
스토리 보드의 색상이 UIColor와 일치하지 않습니다. (0) | 2020.12.13 |
비트 연산자를 사용하여 정수가 짝수인지 홀수인지 확인하는 방법 (0) | 2020.12.13 |