Electron Js: Как использовать сиквелиз в процессе воспроизведения в windows? - PullRequest
0 голосов
/ 29 мая 2020

Я использую Sequelize с MariaDB в своем настольном приложении windows 7. Однако процесс рендеринга не может получить доступ к sequelize или каким-либо моделям, определенным в файлах моделей.

Эта проблема не возникает в Linux . Мне нужно только создать объект sequelize в основном процессе и пройти аутентификацию только один раз. После этого он доступен для любой страницы в процессе рендеринга.

Когда я выполняю отладку, я обнаружил, что главная страница (индекс. html), загруженная в рендерер, должна повторно аутентифицировать продолжение подключение. Но проблема здесь в том, что когда я перехожу на другую страницу по ссылкам на главной странице, соединение снова недоступно. Также я не могу повторно пройти аутентификацию, так как средство визуализации уже аутентифицировалось один раз. Вот мой исходный код и код отладки, который я запускал.

основной процесс:

const {app, BrowserWindow} = require('electron')
const Sequelize = require('sequelize')

const connectStr = 'xxxxxx' //hidden for security purpose
const sequelize = new Sequelize(connectStr)

function createWindow() {
    sequelize.authenticate().then(promise => {
          console.log('Connection has been established successfully.')
          let mainWindow = new BrowserWindow({
              webPreferences: {
                  nodeIntegration: true,
                  zoomFactor: 1.0
              }
          })

          mainWindow.loadFile('index.html')
          // mainWindow.webContents.openDevTools()
    }).catch(err => {
          console.error('Unable to connect to the database:', err)
    })
}

app.allowRendererProcessReuse = true
app.whenReady().then(createWindow)

процесс рендеринга: (работает с linux, но не windows)

const {remote} = require('electron')
const mainProcess = remote.require('./main')
const Bank = require('../models').Bank

$(document).ready(() => {
    Bank.findAll({}).then(banks => { //code })
})

Вот отладочный код Я вставил js файл индекса. html

const Sequelize = require('sequelize')
const Bank = require('../models').Bank

const connectStr = 'xxxxxx' //hidden for security purpose
const sequelize = new Sequelize(connectStr)

//following will work here only once. Once visited another page this also fails.
sequelize.authenticate().then(promise => {
    console.log('Connection has been established successfully.')
    Bank.create({
        name: 'CBL'
    }).then(done => {
        console.log('OK')
    })
})
...