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



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



что я делаю не так?



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



enter image description here

729   12  

12 ответов:

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

возвращаясь к вашему вопросу, что я сделал

  1. cd android
  2. sudo ./gradlew clean

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

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

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

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

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

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

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

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

надеюсь, это может спасти кого-то от головной боли. Я получил эту ошибку после обновления моей версии react-native. Смущающе это только появилось на 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 to index.android.js

project.ext.react = [ entryFile: "index.android.js" // was index.js" ]

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

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

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

/**
 * 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, это сэкономит вам много времени.

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

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

мой .js

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

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

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

react-native link

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

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

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

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

моя проблема была исправлена путем увеличения моего inotify max_user_watches:

sudo sysctl fs.inotify.max_user_watches=1280000

для меня это была проблема с зависимостью react-native от следующей версии пакета react, в то время как в моем пакете.json старый был указан. Обновление моей версии react решило эту проблему.

для меня мой вопрос был неправильно entry-file при объединении.

я использовал приложение.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/

Comments

    Ничего не найдено.