Как правильно получить доступ к локальной базе данных Sqlite3 из моего приложения Electron?

Я пытаюсь создать приложение Electron с помощью React, которое сможет вставлять и извлекать данные из локальной базы данных sqlite3. Я попытался настроить Web Worker для обработки взаимодействий с базой данных, но всякий раз, когда я создаю новое соединение с базой данных, окно инструментов разработчика отключается, и в приложении ничего не происходит. Я думаю, что где-то происходит какая-то ошибка, которую я не могу увидеть или уловить.

Должен ли я использовать Web Worker или аналогичный инструмент потоковой передачи / обработки? Если мне нужно использовать Web Worker, что может вызвать эту проблему?

Я попытался включить пакет sqlite3 в один из моих компонентов React (без Web Worker), но это вызывает всевозможные ошибки.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
586
2

Ответы 2

Закончил отказ от веб-воркеров, поскольку они, по всей видимости, вообще не работают. Переключился на выполнение вставок и запросов в основном процессе и отправку результатов обратно в процесс рендеринга с использованием сборки Electron в IPC.

Просто имейте в виду, что блокировка в основном процессе также может привести к зависанию рендереров. Рендереры связываются с процессом графического процессора через основной процесс, поэтому, если вы заблокируете основной процесс на 500 мс, вы заметите проблемы и в рендерерах ...

Tim 30.12.2018 23:53

Вполне возможно получить доступ / использовать sqlite из процесса рендеринга.

У нас есть огромное сложное приложение, которое обменивается данными с десятками аппаратных USB-устройств через собственные драйверы, и все работает в едином процессе рендеринга. Для этого мы просто гарантируем, что никакой код не выполняет синхронные вызовы.

Я сам не использовал sqlite, но node-sqlite3 говорит, что он полностью асинхронный, поэтому вы можете использовать его из модуля рендеринга Electron, не блокируя пользовательский интерфейс.

Другие вопросы по теме