Я довольно новичок в электронах, nodejs и javascript, но я неуклонно подбирал вещи к хорошим результатам, но я столкнулся с небольшим затруднением и не смог найти аналогичную проблему. Тем не менее, я нашел пример того, как кто-то использует требование таким же образом, заставляя меня поверить, что это должно работать просто отлично.
В быстром запуске электрона require ('Electron') используется для загрузки класса BrowserWindow. Так что теперь я пытаюсь сделать то же самое, но в моем классе. Я пытаюсь загрузить модуль в переменную класса, а затем использовать его позже в CreateWindow. Это приводит к исключению «this.BrowserWindow не является конструктором». Если я отправляю модуль из моего Main.js, который загружает модуль точно так же, как при быстром запуске электрона, непосредственно в мой WindowManager в качестве параметра, он работает. Я мог бы сделать это, если нет более приятного способа сделать это, что я чувствую, что есть / должно быть.
Наконец, я вполне уверен, что модуль загружается каким-то образом, в той или иной форме, потому что попыткатребование недопустимого модуля дает мне исключение «Не удается найти модуль».
Итак, мой вопрос здесь, почему я получаю исключение, когда я ожидаю того же поведения, что и в быстром запуске Electron, и какисправить это правильно / элегантно.
Мой класс:
class WindowManager {
constructor(CCC) {
this.BrowserWindow = require('electron');
this.ListManager = new (require('./ListManager.js').ListManager)(CCC);
this.ListManager.RequestList("Root");
}
createWindow(BrowserWindow) {
// Create the browser window.
this.mainWindow = new this.BrowserWindow({
height: 600,
width: 800,
webPreferences: {
preload: 'preload.js',
nodeIntegration: true
}
});
// and load the index.html of the app.
this.mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
this.mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
this.mainWindow = null
})
}
}
Быстрый запуск электрона :
// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
})
}