我在启动新项目并实现Redux和React-Navigation后收到此错误Module AppRegistry is not a registered callable module
。
调试器逐步介绍我的代码的初始化,但我看不到抛出更描述性错误的位置。我唯一看到的是在调试时确实没有称为runApplication
的方法。由于react-redux
。
import React from 'react'
import { Provider } from 'react-redux';
import configureStore from './store';
import AppReducer from './reducers';
import { persistStore } from 'redux-persist'
import AppWithNavigationState from './navigator'
export default class App extends React.Component {
store = configureStore(AppReducer);
constructor(props) {
super(props);
persistStore(this.store).purge();
}
render() {
return <Provider store={this.store}>
<AppWithNavigationState />
</Provider>
}
}
就我的理解而言,无需注册我的应用程序类,也无需使用AppRegistry
手动注册组件。我感觉到我的代码应该怪,因为这曾经以前工作,但是stacktrace并没有指向任何东西。
当然,当添加AppRegistery.registerComponent
时,它可以工作!但这没有向我解释为什么以前没有必要。
我的AppNavigator
类:
import React from 'react'
import {
BackHandler,
} from 'react-native'
import {
addNavigationHelpers,
StackNavigator,
} from 'react-navigation'
import { connect } from 'react-redux'
import Start from './components/start'
import Login from './components/login'
import AppCamera from './components/camera'
export const AppNavigator = StackNavigator({
Start: {
screen: Start,
navigationOptions: {
title: 'App',
},
},
Login: {
screen: Login,
navigationOptions: {
title: 'Login',
}
},
Camera: {
screen: AppCamera,
navigationOptions: {
title: 'Camera',
}
}
}, {
mode: 'modal',
headerMode: 'none',
});
// const AppWithNavigationState = ({ dispatch, nav }) => (
// <AppNavigator navigation={addNavigationHelpers({ dispatch, state: nav })} />
// );
export class AppWithNavigationState extends React.Component {
constructor(props) {
super(props);
}
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', function() {
const { dispatch, navigation, nav } = this.props;
if (nav.routes.length === 1 && (nav.routes[0].routeName === 'Login' || nav.routes[0].routeName === 'Start')) {
return false;
}
// if (shouldCloseApp(nav)) return false
dispatch({ type: 'Navigation/BACK' });
return true;
}.bind(this));
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress');
}
render() {
return <AppNavigator navigation={addNavigationHelpers({ dispatch: this.props.dispatch, state: this.props.nav })} />
}
}
AppWithNavigationState.propTypes = {
dispatch: React.PropTypes.func.isRequired,
nav: React.PropTypes.object.isRequired,
auth: React.PropTypes.object.isRequired,
};
const mapStateToProps = state => ({
nav: state.nav,
auth: state.auth,
});
export default connect(mapStateToProps)(AppWithNavigationState);
只需杀死所有节点进程并启动NPM服务器并运行应用程序:
step1:运行命令killall -9节点
step2:运行命令npm start
step3:运行命令反应式run-ios或反应式run-android