私は現在、Androidエミュレータで ES6 react-native-webpack-server を実行しようとしています。違いは、package.json
とbuild.grade
をreact 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.ios.jsが間違っていたことです(その内容を見ずに例の1つをコピー&ペーストしたため)モジュールエクスポート宣言
exports.title = ...
exports.description = ...
module.exports = MyRootComponent;
予想の代わりに
AppRegistry.registerComponent('MyAppName', () => MyRootComponent);
あなたは私が推測するindex.Android.jsとAndroid上で同じ問題を抱えている可能性があります。
一つの主なこの問題の理由がある可能性がありますあなたはプラグインをインストールし、それをリンクするのを忘れているでしょう.
これを試して:
react-native link
アプリを再実行してください。
これが役立つことを願っています。 commentsで教えてください。ありがとう。
私は追加するだけでこの問題を解決しました
import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";
AppRegistry.registerComponent(appName, () => App);
私へindex.js
これがあなたの中に存在することを確認してください index.js
うまくいけば、これは誰かの頭痛を救うことができます。反応ネイティブ版をアップグレードした後にこのエラーが発生しました。紛らわしいことにそれは物事の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"
]
私にとって私の問題はバンドリングするときに間違ったentry-fileを入れることでした。
私はエントリファイルとして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/
理由はわかりませんが、index.Android.jsに含まれているindex.jsファイルからAppRegistry.registerComponentを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
を実行してアプリをビルドします。そしてそれはうまくいった。 Sudo ./gradlew clean
を実行する前にこれを最初に試してください、それはあなたに多くの時間を節約するでしょう。
パッケージャを再起動私のために働いた。ネイティブのパッケージャをkillして再度実行してください。
私の場合、私のindex.js
は、誤って私のLauncher jsの代わりに別のjsを指していますが、これはAppRegistry.registerComponent()
を含んでいません。
そのため、ファイルyourindex.js
pointがクラスを登録することを確認してください。
私の問題は私のinotify max_user_watchesを増やすことで修正されました:
Sudo sysctl fs.inotify.max_user_watches=1280000
私のために私はちょうどこのように反応ネイティブとリンク:反応ネイティブリンク
私にとっては、次のバージョンのreactパッケージへのreact-nativeの依存関係の問題でしたが、私のpackage.jsonでは古いものが指定されていました。私の反応バージョンをアップグレードすることはこの問題を解決しました。