Электронный строитель - mysql или sqlite соединение не удалось - PullRequest
0 голосов
/ 18 января 2020

проблема с базой данных

Я использую Vue CLI Plugin Electron Builder для создания собственного приложения, и я застрял при подключении к базе данных, независимо от того, какую базу данных я использовать (mysql2 / sqlite3) с или без продолжения, я получил таймаут для mysql (прерванное соединение) и не могу открыть файл для sqlite, это происходит только в режиме разработки, после сборки проекта он работает отлично.

"configureWebpack": {
      "externals": {
        "sequelize": "require('sequelize')",
        "mysql2": "require('mysql2')",
        "sqlite3": "require('sqlite3')",
        "sqlite": "require('sqlite')"
      }
    },
    "pluginOptions": {
      "electronBuilder": {
        "externals": [
          "sequelize",
          "mysql2",
          "sqlite3",
          "sqlite"
        ],
  1. Без приведенных выше кодов у меня возникнет проблема "нехватка pg-hsotre" или "пожалуйста, установите mysql2".
  2. Не всегда происходит сбой, для mysql это примерно 50% и 95% для sqlite, и когда соединение работает, оно будет работать, пока я не закрою главное окно. Я не менял никакого кода во время попыток, просто продолжал печатать пряжу электрон: служить.
  3. 100% работает после пряжи электрон: сборка, без указания какой платформы.
  4. Только в потоке рендерера, если Я использую ipcMain в «backgroud. js» для прослушивания и извлечения данных, это будет работать.

коды:

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('D:/xxx/xxx/xx.db');

export default {
  all() {
    return new Promise((resolve, reject) => {
      db.all('select * from table', function (error, rows) {
        if (error) {
          reject(error);
        } else {
          resolve(rows);
        }
      });
    });
  }
};
...