Я хотел бы отправить функцию из моего основного процесса визуализации
У меня есть функция, которую я экспортирую из db.services.js
модуля
// db.services.js
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert')
var DatabaseService = (function () {
"use strict";
var instance; //prevent modification of "instance" variable
function Singleton() {
if (instance) {
return instance;
}
instance = this;
}
Singleton.create = function (db_uri) {
//Singleton initialization code
this.db_uri = db_uri
this.db = undefined
this.a = 0 // debugging async behavior
}
//instance accessor
Singleton.getInstance = function () {
return instance || new Singleton();
};
Singleton.getDB = function () {
return this.db.db('xFilterDB') // directly return the used DB
}
Singleton.establishConnection = function (callback) {
...
}
return Singleton;
}());
// exporting a "singleton" object to use with all views
DatabaseService.getInstance();
module.exports = DatabaseService;
Я 'импортирую' функцию в мой основной электронный процесс app.js
// app.js
const {
app,
BrowserWindow,
ipcMain
} = require('electron');
const isDev = require('electron-is-dev');
const DatabaseService = require('./services/db.services');
app.on('ready', function () {
DatabaseService.getInstance();
DatabaseService.create("mongodb://localhost:27017");
mainWindow = new BrowserWindow({
width: 1024,
height: 768,
webPreferences: {
nodeIntegration: true
}
})
let url = 'file://' + __dirname + '/views/main.html'
mainWindow.loadURL(url)
mainWindow.webContents.on('did-finish-load', () => {
console.log(DatabaseService);
//
// [Function: Singleton] {
// create: [Function],
// getInstance: [Function],
// getDB: [Function],
// establishConnection: [Function],
// db_uri: 'mongodb://localhost:27017',
// db: undefined,
// a: 0
// }
mainWindow.webContents.send('database-service',
DatabaseService); // <-- I am sending the function here
});
windows.push(mainWindow)
}
В основной. html Я
<script>
require('./main.js')
</script>
И в основной. js
//main.js
ipcRenderer.on('database-service', (event, args) => {
// ----- mongo connection ESTABLISH REGION START----
// implicit async
console.log(args); // <-- args is null here
...
}
Любая идея, что здесь происходит не так?
Также, очевидно, это webContents.send('database-service', DatabaseService)
устарело. Так что лучшее решение будет оценено вдвойне.