TypeError:未定义不是一个对象(评估'_expo.default.FileSystem')]
2019-08-19
5331
我尝试将数据库文件从 assets 导入 expo。但是它不起作用,并返回以下警告:
TypeError: undefined is not an object (evaluating '_expo.default.FileSystem')]
我尝试了很多次,如果我创建一个新数据库,它可以工作,但如果我尝试从 asset 加载现有数据库,它将不起作用
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个回答
我使用的是
"sdkVersion": "35.0.0"
。看来 Expo 改变了它的 API。
现在你需要安装一个单独的依赖项:
npm i --save expo-file-system
然后为你的组件单独导入
FileSystem
对象:
import * as FileSystem from 'expo-file-system';
Roman
2019-10-02