Как скопировать файл .db из активов в FileSystem в экспо - PullRequest
0 голосов
/ 24 апреля 2020
  1. Expo SDK Версия: 36.0.0
  2. Платформа: iOS Симулятор

Мне нужно скопировать файл .db из активов в FileSystem.documentDirectory но я получаю ошибку. Вот код, который я пытаюсь:

    await FileSystem.downloadAsync(
        Asset.fromModule(require('../assets/databases/data.db')).uri,
        `${FileSystem.documentDirectory}SQLite/data.db`
    );

Вот ошибка, которую я получаю:

Unable to resolve module "../assets/databases/data.db"
None of these files exist:
* assets/databases/data.db(.native|.ios.expo.ts|.native.expo.tx|.expo.ts|.ios.expo.tsx|.native.expo.tsx|.expo.tsx|.ios.expo.js|.native.expo.js|.expo.js|.ios.expo.jsx|.native.expo.jsx|.expo.jsx|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json|.ios.wasm|.native.wasm|.wasm)

Как мне скопировать файл .db из ресурсов в папку FileSystem.documentDirectory? Мне просто нужно скопировать файл .db из ресурсов в папку FileSystem.documentDirectory, но из-за этой ошибки выглядит, что Asset.fromModule разрешает только файлы изображений.

Если я использую точный тот же код, но замените файл .db файлом .png, он работает.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Я нашел ответ по комбинации сообщений на форуме, в первую очередь это: https://forums.expo.io/t/unable-to-load-obj-file-using-require/15794/3

Проблема в том, что по умолчанию expo Assets api не распознает .db файлы, поэтому вам нужно создать в root вашего проекта файл с именем metro.config.js, а затем добавить следующий код в файл:

module.exports = {
    resolver: {
        assetExts: ["db", "ttf", "png"]
    }
};

После этого вы можете затем сделайте это, и это будет работать:

    await FileSystem.downloadAsync(
        Asset.fromModule(require('../assets/databases/data.db')).uri,
        `${FileSystem.documentDirectory}SQLite/data.db`
    );
0 голосов
/ 27 апреля 2020
  1. Экспо SDK Версия: 36.0.0
  2. Платформа: android Экспо-клиент sdk-qr код

Мне также нужен этот файл БД, и я не понимаю как это получить ..

мой код здесь просто дать мне путь .. но нет такого пути, я просто хочу увидеть мой файл БД и я хочу сохранить этот файл на моем рабочем столе. как я могу это сделать?

const { uri } = await FileSystem.getInfoAsync(
        `${FileSystem.documentDirectory}SQLite/${'places.db'}`
    )
     console.log("THIS IS PATH OF THE DB",uri)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...