I am new to react native.I was trying to use expo-sqlite
and following their guide under "Importing an existing database".
I have did 'expo install expo-file-system expo-asset`I have create a metro.config.js with the code from the guide
but when I copied the function:
async function openDatabase(pathToDatabaseFile: string): Promise<SQLite.WebSQLDatabase> { if (!(await FileSystem.getInfoAsync(FileSystem.documentDirectory +'SQLite')).exists) { await FileSystem.makeDirectoryAsync(FileSystem.documentDirectory +'SQLite'); } await FileSystem.downloadAsync( Asset.fromModule(require(pathToDatabaseFile)).uri, FileSystem.documentDirectory +'SQLite/myDatabaseName.db' ); return SQLite.openDatabase('myDatabaseName.db');}
VSC showed errors around FileSystem
and Asset. Saying not able to find all of FileSystem
properties and Asset
Property 'getInfoAsync' does not exist on type '{ new (): FileSystem; prototype: FileSystem; }'.
Cannot find name 'Asset'.
I am using Typescript.
package.json
{"name": "gymtracker","version": "1.0.0","main": "node_modules/expo/AppEntry.js","scripts": {"start": "expo start","android": "expo start --android","ios": "expo start --ios","web": "expo start --web","eject": "expo eject","preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions" },"dependencies": {"@expo/ngrok": "^4.1.0","@react-native-community/masked-view": "^0.1.11","@react-navigation/bottom-tabs": "^6.3.1","@react-navigation/drawer": "^6.4.2","@react-navigation/native": "^6.0.10","@react-navigation/native-stack": "^6.6.2","@react-navigation/stack": "^6.2.1","expo": "~45.0.0","expo-asset": "~8.5.0","expo-file-system": "~14.0.0","expo-sqlite": "~10.2.0","expo-status-bar": "~1.3.0","react": "17.0.2","react-dom": "17.0.2","react-native": "0.68.2","react-native-gesture-handler": "~2.2.1","react-native-reanimated": "^2.8.0","react-native-safe-area-context": "^4.3.1","react-native-screens": "^3.13.1","react-native-web": "0.17.7" },"devDependencies": {"@babel/core": "^7.12.9","@types/react": "~17.0.21","@types/react-native": "~0.66.13","typescript": "~4.3.5" },"resolutions": {"@types/react": "17.0.2","@types/react-dom": "17.0.2" },"private": true}
Update
I have used these two lines:
import * as Asset from 'expo-asset';import * as FileSystem from 'expo-file-system';
The FileSystem error disappeared. However:
Property 'fromModule' does not exist on type 'typeof import("/home/ryan/Documents/GymTracker/node_modules/expo-asset/build/index")'.ts(2339)