React-Native:模块AppRegistry不是已注册的可调用模块

我目前正在试图在Android模拟器上运行ES6 react-native-webpack-server 。 所不同的是,我已经升级了我的package.jsonbuild.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和我的原因是什么我的index.io.js是不正确的(因为我复制粘贴其中一个例子,而不看它的内容),它是以模块出口声明

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

而不是预期的

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

我猜测你可能在android上有和index.android.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来构build应用程序。 它的工作。 在运行sudo ./gradlew clean之前,先尝试一下,这会为您节省大量的时间。

我不知道为什么,但是当我从包含在index.android.js中的index.js文件移动AppRegistry.registerComponent直接驻留在index.android.js时,它似乎工作。