Подтвердить что ты не робот

React-Native: модуль AppRegistry не является зарегистрированным вызываемым модулем

В настоящее время я пытаюсь запустить ES6 response-native-webpack-server на эмуляторе Android. Разница в том, что я обновил свои package.json и build.grade, чтобы использовать реакцию 0.18.0, и я получаю эту ошибку при загрузке. Насколько мне известно, AppRegistry импортируется правильно. Даже если бы я прокомментировал код, эта ошибка все же возникает. Это действительно работает на iOS без проблем.

Что я делаю неправильно?

EDIT: после использования других шаблонов, поддерживающих 0.18.0, я все еще сталкиваюсь с одной и той же проблемой.

введите описание изображения здесь

4b9b3361

Ответ 1

Я только что обновил до реагирования-родной 0.18.1 сегодня, когда у него возникли проблемы с независимыми экспертами с версией 0.19.0-rc.

Вернемся к вашему вопросу, что я сделал.

  • cd android
  • sudo ./gradlew clean

затем вернитесь в рабочий каталог и запустите react-native run-android

вы должны перезапустить свой npm тоже после этого обновления.

надеюсь, что это сработает для вас.

Ответ 2

У меня была та же проблема на iOS, и причина для меня заключалась в том, что мой index.ios.js был неверным (потому что я скопировал один из примеров, не просматривая его содержимое), он заканчивался декларацией экспорта модуля

exports.title = ...
exports.description = ...
module.exports = MyRootComponent;

Вместо ожидаемого

AppRegistry.registerComponent('MyAppName', () => MyRootComponent);

Я думаю, у вас может быть такая же проблема на Android с index.android.js.

Ответ 3

Одной из основных причин этой проблемы может быть то, что вы установили плагин и забыли связать его.

попробуй это:

react-native link

Перезапустите ваше приложение.

Надеюсь, это поможет. Пожалуйста, дайте мне знать в комментариях. Благодарю.

Ответ 4

Я решил эту проблему, просто добавив

import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";  
AppRegistry.registerComponent(appName, () => App);

к моему index.js

убедитесь, что это существует в вашем index.js

Ответ 5

Надеюсь, это может спасти кого-то головную боль. Я получил эту ошибку после обновления моей реактивной версии. Смутно это только появилось на стороне Android.

В моей файловой структуре есть 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"
]

Ответ 6

Я не знаю, почему, но когда я перемещаю AppRegistry.registerComponent из файла index.js, который включен в index.android.js, чтобы напрямую находиться внутри index.android.js, он работает.

Ответ 7

Для меня моя проблема заключалась в том, чтобы при вставке неверного файла ввода.

Я использовал App.js в качестве своего входного файла, поэтому App не смог найти 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/

Ответ 8

Если вы используете некоторые из примеров, они могут не работать

Вот моя версия для просмотра прокрутки

/**
 * 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);

Ответ 9

Я удалил его на Genymotion. Затем запустите react-native run-android, чтобы создать приложение. И это сработало. Попробуйте это раньше, прежде чем запускать sudo ./gradlew clean, это сэкономит вам много времени.

Ответ 10

Для просто перезагрузки компьютера это исправили. (Моя ошибка была: "модуль appRegistry не является зарегистрированным вызываемым модулем (вызывающим runapplication) js engine: hermes")

Другой главный ответ, который здесь отсутствует и мог бы сработать, заключался в том, чтобы просто убить процессы узла:

killall -9 node

[ Module AppRegistry не является зарегистрированным вызываемым модулем (вызывающим runApplication) ]

Ответ 11

В моем случае мой index.js просто указывает на другой js вместо моего Launcher js ошибочно, который не содержит AppRegistry.registerComponent().

Итак, убедитесь, что файл index.js указывает на регистрацию класса.

Ответ 12

Моя проблема была исправлена, увеличив мой inotify max_user_watches:

sudo sysctl fs.inotify.max_user_watches=1280000

Ответ 13

Для меня это была проблема с зависящей от реакции зависимостью от следующей версии пакета реакции, в то время как в моем package.json был указан старый. Модернизация моей реактивной версии решила эту проблему.

Ответ 14

Для меня просто я связан с реагировать родной, как этот путь: реакция-родная ссылка

Ответ 15

рестарт упаковщик работал у меня. просто убей реагирующий родной упаковщик и запусти его снова.

Ответ 16

если вы сталкиваетесь с этой ошибкой в Windows с Android

откройте папку приложения корневого каталога и перейдите в папку Android.

     cd android 
     gradlew clean

запустите приложение снова реагировать родной запустить андроид

хотя это работает

Ответ 17

npm start - --reset-cache

Возможно, порт уже используется. Я сталкиваюсь с подобной проблемой, когда я сначала запускаю реактив-родной запуск андроид, а затем запуск npm. Я решаю это так: во-первых, получить идентификатор процесса, работающего в порту 8081: судо лсоф -i: 8081

Ответ 18

Я получил эту ошибку в Экспо, потому что я экспортировал неправильное имя компонента, например,

const Wonk = props => (
  <Text>Hi!</Text>
)

export default Stack;

Ответ 19

Я решил эту проблему, выполнив следующие действия:

  1. cd android
  2. ./gradlew clean
  3. taskkill/f/im node.exe
  4. удалить приложение из Android