React-Native: 모듈 AppRegistry가 등록된 호출 가능한 모듈
나는 현재 안드로이드 에뮬레이터에서 ES6 reactive-native-webpack-server를 실행시키려 하고 있다.차이점은 내가 업그레이드 했다는 것이다.package.json
그리고build.grade
반응을 보이다0.18.0
그리고 부팅할 때 이 오류가 발생하는 것이다.내가 알기로는AppRegistry
올바르게 가져오기.내가 코드에 대해 코멘트를 해도 이 오류는 여전히 나타난다.이것은 iOS에서 문제없이 작동한다.
내가 뭘 잘못하고 있는 거지?
편집: 0.18.0을 지원하는 다른 보일러 플랜트를 시도해 본 후에도, 나는 여전히 같은 문제를 접하고 있다.
방금 리액션 리액션으로 업그레이드했어0.18.1
오늘날에는 동료의존성 문제를 안고 있는 것이 힘들다.0.19.0-rc
개봉 전 판
네 질문으로 돌아가서, 내가 한 일은
cd android
sudo ./gradlew clean
(여기에서 청정 작동 방법에 대한 자세한 정보)
그런 다음 작업 디렉토리로 돌아가서 실행하십시오.react-native run-android
업그레이드 후 npm도 다시 시작해야 한다.
이게 너에게 효과가 있길 바라.
iOS에서도 같은 문제가 있었고, 그 원인은 내 인덱스.ios.js가 부정확하다는 것이었다(그 내용을 보지 않고 하나의 예를 복사했기 때문에), 모듈 수출 선언으로 끝나가고 있었다.
exports.title = ...
exports.description = ...
module.exports = MyRootComponent;
기대했던 것 대신에
AppRegistry.registerComponent('MyAppName', () => MyRootComponent);
당신은 안드로이드에서도 같은 이슈를 가질 수 있을 것 같은데, 인덱스.android.js.
이 문제의 한 가지 주된 이유는 플러그 인을 설치한 후 플러그 인을 연결하는 것을 잊어버렸기 때문일 수 있다.
다음을 시도해 보십시오.
react-native link
응용 프로그램을 다시 실행하십시오.
이것이 도움이 되기를 바란다.댓글로 알려줘.고마워요.
나는 단지 덧붙여서 이 문제를 해결했다.
import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";
AppRegistry.registerComponent(appName, () => App);
나의 지수에 의하면.js.
이 항목이 인덱스.js에 있는지 확인하십시오.
컴퓨터를 다시 시작하면 된다.(내 오류는 "모듈 appRegistry는 등록된 호출 가능한 모듈이 아니다(호출 실행 응용 프로그램) js 엔진: 헤르메스")
여기에 누락되어 있을 수 있는 또 다른 주요 해결책은 노드 프로세스를 중지하는 것이었습니다.
killall -9 node
[ 모듈 AppRegistry가 등록된 호출 가능한 모듈(호출 실행 응용 프로그램)이 아님 ]
나에게 있어 내 문제는 번들을 할 때 잘못된 입력 파일을 넣는 것이었다.
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/
나는 iOS & Android를 가로질러 Mac에서 개발되고 있는 이 문제를 내가 예전에 종속성의 코드를 만지작거리던 후에 갖게 되었다.node_modules
디르
다음과 같이 해결했다.
rm -rf node_modules
npm i
npx pod-install ios
기본적으로 종속성을 새로 설치하는 겁니다.
이것이 누군가에게 두통을 덜어줄 수 있기를 바란다.내 리액티브 버전을 업그레이드한 후 이 오류가 발생했어.혼란스럽게도 그것은 사물의 안드로이드 면에서만 나타났다.
내 파일 구조에는 다음이 포함됨index.ios.js
그리고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"
]
이유는 모르겠지만 index.android.js에 포함된 index.js 파일에서 appRegistry.registry.registrycomponent를 이동하여 index.android.js 내부에 직접 상주하면 효과가 있는 것 같다.
리시스트패커는 나한테 효과가 있어. 그냥 리액션한 원주민 패커만 죽이고 다시 실행해.
Android가 있는 창에서 이 오류를 직면하고 있는 경우
루트 디렉터리 앱 폴더를 열고 안드로이드 폴더로 이동하십시오.
cd android
gradlew clean
응용프로그램을 다시 시작(react-react-reason 실행)
bhoohom 그것은 효과가 있다.
SafeAreaView 내에서 직접 렌더링하지 않는지 확인하십시오.
이 형식을 따르고 있는지 확인하십시오.
<SafeAreaView>
<View>
{children}
</View>
</SafeAreaView>
만약 당신이 몇 가지 예를 사용하고 있다면 그것들은 작동하지 않을 수 있다.
스크롤 보기용 내 버전
/**
* 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);
Genymotion에서 제거했어그럼 도망가.react-native run-android
앱을 만들기 위해서.그리고 그것은 성공하였다.실행하기 전에 먼저 시도하십시오.sudo ./gradlew clean
시간을 많이 절약할 수 있을 겁니다.
npm start -- --nfm-time
아마도 포트는 이미 사용되고 있을 것이다.나는 반응형 런앤드로이드(reactive-native run-android)를 처음 실행한 후 npm을 시작할 때 비슷한 문제에 직면한다.나는 이렇게 해결한다:먼저 포트 8081: sudo lsof -i :8081에서 실행되는 프로세스의 ID를 구하십시오.
나의 경우, 나의 경우index.js
로 런칭 만 하면 이 js는 런칭 js가 .AppRegistry.registerComponent()
.
그러니, 그 파일을 당신의 것으로 만드세요.index.js
수강 등록을 가리키다
max_user_watch inotify를 늘려서 문제가 해결되었다.
sudo sysctl fs.inotify.max_user_watches=1280000
나에게 그것은 내 패키지에 있는 동안 다음 버전의 리액션 패키지에 대한 리액션 의존성의 문제였다.Json 옛것이 명기되었다.나의 리액션 버전을 업그레이드하여 이 문제를 해결했다.
나는 단지 이런 식으로 react-native link와 연결했다.
내가 엑스포에서 이런 실수를 한 것은 예를 들어 잘못된 부품 이름을 수출했기 때문이다.
const Wonk = props => (
<Text>Hi!</Text>
)
export default Stack;
나는 다음과 같은 방법으로 이 문제를 해결했다.
- cd 안드로이드
- ./깨끗하게 하다.
- 태스킬 /f /im 노드.퇴장시키다
- 안드로이드에서 앱을 제거하다
만약 당신이 윈도우 머신을 사용하고 있다면 당신은 해야한다.cd android
그때./gradlew clean
그리고 나서 달리다react-native run-android
나도 같은 문제를 여러 번 겪었어.다음과 같은 해결책이 나의 문제를 해결했다.나는 그것들을 복잡성에 따라 나열했다.
컴퓨터를 다시 시작하고 문제가 해결되었는지 확인
여전히 존재하는 경우, 일반적으로 실행 중인 포트에서 프로세스를 중지하십시오.
netstat -ano | findstr 8080
taskkill /F /PID <PID>
여전히 존재하는 경우 다음과 같이 'android' 디렉토리로 이동한 후 더 진행하십시오.
cd 안드로이드
./깨끗하게 하다.
및 시작 노드
npm start
그리고 나서 달리다npx react-native run android
또는expo stat
그리고 'a'를 누른다.
위의 문제들에 대해 당신이 괜찮기를 바란다.
이는 노드, 포드, 그라인드 등 어디서든 캐쉬 문제가 발생하기 때문에 전체 슬레이트 정리를 수행하는 것이 좋으며, 이 용도로는 기본 클린 프로젝트를 사용할 수 있다.
다음 명령(OS: Windows 10)을 따라 문제를 해결했다.
cd android
gradlew clean
cd..
npx react-native run-android
아래 언급 사용: 패키지
"기존-기존-재생": "^2.2.4"
'Programing' 카테고리의 다른 글
Vuetify v-btn 및 Vue 라우터를 사용하여 새 창에서 링크 열기 (0) | 2022.03.25 |
---|---|
"@" 기호는 '@angular/core'에서 { Component } 가져오기 문에서 무엇을 의미하십니까? (0) | 2022.03.25 |
useSelector with React.memo vs connect (0) | 2022.03.25 |
Python 객체 내부를 어떻게 보는가? (0) | 2022.03.25 |
이번의history.properties/"는 나를 홈페이지로 리디렉션하지 않는다. (0) | 2022.03.25 |