在react-native中导入领域时的未知执行上下文

时间:2017-03-02 14:23:16

标签: android react-native realm

我真的很反应原生,我试图使用Realm。我已经完成了 react-native link realm rnpm link realm 。但是当我尝试导入Realm时,我得到错误未知执行上下文,继承我的 index.android.js

import React, { Component } from 'react';
import {
 AppRegistry,
 StyleSheet,
 Text,
 View,
} from 'react-native';
import { TabViewAnimated, TabBar } from 'react-native-tab-view';
import Today from './app/Today'
import Realm from 'realm'
import _ from 'lodash'

const styles = StyleSheet.create({
container: {
    flex: 1,
},
page: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
},
});
export default class ExpenseManagerProject extends Component {
state = {
index: 0,
routes: [
{ key: '1', title: 'Today' },
{ key: '2', title: 'Category' },
{ key: '3', title: 'Date' },
],
};
_handleChangeTab = (index) => {
this.setState({ index });
 };

_renderFooter = (props) => {
  return <TabBar {...props} />;
};

_renderScene = ({ route }) => {
switch (route.key) {
    case '1':
    return <Today/>;
    case '2':
    return <View style={[ styles.page, { backgroundColor: '#673ab7' } ]} />;
    default:
    return null;
}
};

render() {
return (
     <TabViewAnimated
      style={styles.container}
      navigationState={this.state}
      renderScene={this._renderScene}
      renderFooter={this._renderFooter}
      onRequestChangeTab={this._handleChangeTab}
      />
  );
}
}

AppRegistry.registerComponent('ExpenseManagerProject', () => ExpenseManagerProject);

2 个答案:

答案 0 :(得分:2)

当我在模拟器模式下使用chrome的调试器时,我收到了此错误。这是因为Realm不知道它是以chrome还是物理设备运行。 希望它有所帮助

答案 1 :(得分:2)

根据documentation:

  

将以下行添加到android / settings.gradle:

gradle include ':realm' project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/android')
  

将编译行添加到android / app / build.gradle中的依赖项:

gradle dependencies { compile project(':realm') }
  

添加导入并链接android / app / src / main / java / com / [your-application-name] /MainApplication.java中的包:

import io.realm.react.RealmReactPackage; // add this import
public class MainApplication extends Application implements ReactApplication {
    @Override
    protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
            new MainReactPackage(),
            new RealmReactPackage() // add this line
        );
    }
}

对我来说,这只是最后一步,将行添加到MainApplication.java中,我必须这样做,因为其他内容已经存在。因此,请务必检查提到的所有文件。

如果仍然无效,请创建一个新项目,添加Realm(包括上述步骤)并添加您之前编写的所有文件。