Programing

React-Native: 모듈 AppRegistry가 등록된 호출 가능한 모듈

c10106 2022. 3. 25. 21:12
반응형

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개봉 전 판

네 질문으로 돌아가서, 내가 한 일은

  1. cd android
  2. 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갈아타다indexindex.android:

@Override
protected String getJSMainModuleName() {
    return "index.android"; // was "index"
}

그럼 안으로app/build/build.gradle, 바꾸다entryFile로부터index.jsindex.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;

나는 다음과 같은 방법으로 이 문제를 해결했다.

  1. cd 안드로이드
  2. ./깨끗하게 하다.
  3. 태스킬 /f /im 노드.퇴장시키다
  4. 안드로이드에서 앱을 제거하다

만약 당신이 윈도우 머신을 사용하고 있다면 당신은 해야한다.cd android그때./gradlew clean그리고 나서 달리다react-native run-android

나도 같은 문제를 여러 번 겪었어.다음과 같은 해결책이 나의 문제를 해결했다.나는 그것들을 복잡성에 따라 나열했다.

  1. 컴퓨터를 다시 시작하고 문제가 해결되었는지 확인

  2. 여전히 존재하는 경우, 일반적으로 실행 중인 포트에서 프로세스를 중지하십시오.

    netstat -ano | findstr 8080

     taskkill /F /PID <PID>
    
  3. 여전히 존재하는 경우 다음과 같이 'android' 디렉토리로 이동한 후 더 진행하십시오.

    cd 안드로이드

    ./깨끗하게 하다.

및 시작 노드

npm start

그리고 나서 달리다npx react-native run android또는expo stat그리고 'a'를 누른다.

위의 문제들에 대해 당신이 괜찮기를 바란다.

이는 노드, 포드, 그라인드 등 어디서든 캐쉬 문제가 발생하기 때문에 전체 슬레이트 정리를 수행하는 것이 좋으며, 이 용도로는 기본 클린 프로젝트를 사용할 수 있다.

다음 명령(OS: Windows 10)을 따라 문제를 해결했다.

  1. cd android
  2. gradlew clean
  3. cd..
  4. npx react-native run-android

아래 언급 사용: 패키지

"기존-기존-재생": "^2.2.4"

참조URL: https://stackoverflow.com/questions/34969858/react-native-module-appregistry-is-not-a-registered-callable-module

반응형