TypeError:undefined不是对象(正在评估'_expo.default.FileSystem')

时间:2019-08-19 05:54:21

标签: react-native expo

我正在尝试从资产向博览会导入数据库文件。但这不起作用,并在下面向我返回警告:

  

TypeError:未定义不是对象(正在评估'_expo.default.FileSystem')]

我尝试了很多次,如果我创建一个新数据库,它可以工作,但是如果我尝试从资产中加载一个现有数据库,它将无法工作

class Items extends React.Component {
  state = {
    items: null
  };

  componentDidMount = async () => {
    await Expo.FileSystem.downloadAsync(
      Expo.Asset.fromModule(require("./assets/exu-word.db")).uri,
      `${Expo.FileSystem.documentDirectory}SQLite/exu-word.db`
    );

    let db1 = SQLite.openDatabase("exu-word.db");
  };

  render() {

    const { items } = this.state;


    if (items === null || items.length === 0) {
      return null;
    }

    return (
      <View style={styles.sectionContainer}>

        {items.map(({ id, words }) => (
          <TouchableOpacity
            key={id}
            onPress={() => this.props.onPressItem && this.props.onPressItem(id)}
            style={{
              backgroundColor: "#fff",
              borderColor: "#000",
              borderWidth: 1,
              padding: 8
            }}
          >
            <Text style={{ color: "#000" }}>{words}</Text>
          </TouchableOpacity>
        ))}
      </View>
    );
  }

  update() {
    db.transaction(tx => {
      tx.executeSql(
        `select * from WORDS;`,
        [],
        (_, { rows: { _array } }) => this.setState({ items: _array })
      );
    });
  }
}

1 个答案:

答案 0 :(得分:0)

我与std::vector<int*> v; int a = 2; v.push_back(&a); v[0] = 4; // (a == 4) true 合作。看来Expo改变了它的API。 现在您需要安装一个单独的依赖项:

"sdkVersion": "35.0.0"

然后为您的组件独立导入npm i --save expo-file-system 对象:

FileSystem