React-Native:模块AppRegistry不是已注册的可调用模块
我目前正在试图在Android模拟器上运行ES6 react-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和我的原因是什么我的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时,它似乎工作。