Sqlite Electron: Ошибка: SQLITE_CANTOPEN: невозможно открыть файл базы данных - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь открыть файл базы данных sqlite с помощью node-sqlite3 в моем приложении Angular + Electron.

Несмотря на то, что я убедился, что файл существует, и Electron может его прочитать, когда я пытаюсь создать базу данных sqlite, используя:

import * as sqlite from 'sqlite3';

// ...

const path = `${__dirname}/assets/sqlite.db`;

const fs = require('electron').remote.require('fs');
console.log(path);
if (fs.existsSync(AppConfig.sqlitePath)) {
  console.log('the file exists');
} else {
  console.log('the file does not not');
}

const myDb = new sqlite.Database(path, sqlite.OPEN_READONLY, (error) => {
  console.log(error);
});

Файл существует, так как я получил правильное сообщение console.log и выглядит так:

/tmp/.mount_xxxxxx/resources/app.asar.unpacked/dist/assets/sqlite.db

Однако, с new sqlite.Database(...) я получаю следующая ошибка, поскольку файл не существует:

Ошибка: SQLITE_CANTOPEN: невозможно открыть файл базы данных

1 Ответ

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

Я получил чаевые от artiebits , чтобы посмотреть на asarUnpack , и действительно, это был правильный путь к go.


Я решил:

1) добавление следующего к моему electron-builder.json:

"asarUnpack": [
  "dist/assets/sqlite.db"
],

2) замена:

const path = `${__dirname}/assets/sqlite.db`;

на:

const path = `${__dirname}/assets/sqlite.db`.replace('app.asar', 'app.asar.unpacked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...