Электрон: не может получить доступ к main.js из другого файла .js - PullRequest
0 голосов
/ 29 июня 2019

У меня есть все мои обработчики HTML во втором файле (b.js).Они выглядят так:

window.onload = function () {
  let btn = window.getElementById('btn');
  button.addEventListener('click', fn);
}

Это работает нормально, но я хочу сделать кнопку, чтобы открыть другое окно, поэтому я попытался добавить экспортированный метод в main.js.Мой полный файл main.js ниже:

const {app, BrowserWindow} = require('electron');
let mainWindow;

function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    width: 500,
    height: 300,
    frame: false,
    transparent: true,
    resizable: false,
    webPreferences: {
      nodeIntegration: true,
    }
  });
  mainWindow.setResizable(false);
  mainWindow.loadFile('index.html');
  mainWindow.webContents.openDevTools();

  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.quit();
  })
}

app.on('ready', createWindow);

module.exports = {
  openMainScreen: function () {
    mainWindow.loadFile("mainScreen.html");
    mainWindow.resizeTo(1200, 800);
  }
};

Если я попытаюсь require(main.js) в b.js, как я думал, я должен: Я получаю эту ошибку:

Uncaught TypeError: Cannot read property 'on' of undefined

Указывая наapp.on('ready'....Глядя на этот пост: Невозможно прочитать свойство 'on' неопределенного в электронном JavaScript Он говорит, что приложение запускается дважды.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 29 июня 2019

Способ, которым я это исправил, состоял в том, чтобы использовать электроны, встроенные в IPCmain, для связи между javascript, который отображался с помощью html, и основным javascript, который запускал приложение.
https://electronjs.org/docs/api/ipc-main

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...