Загрузка скрипта предварительной загрузки в Electron и Vue

Я использую Vue CLI 3 и vue-cli-plugin-electron-builder для упаковки своего приложения Vue Electron, и я не могу получить свой скрипт preload.js для работы с электронами.

главное окно

win = new BrowserWindow({
  width: 800,
  height: 600
  webPreferences: {
    nodeIntegration: false,
    preload: path.join(__dirname, "/../src/preload.js") // works but window.electron.dialog in undefined
  }
});

preload.js

const { dialog } = require("electron");

window.electron = {};
window.electron.dialog = dialog;

window.electron.dialog всегда не определен в моем компоненте Vue - импорт явно не работает. Обратите внимание, что window.electron определен правильно. Я, должно быть, что-то упускаю.


person Jan Vorisek    schedule 06.06.2019    source источник


Ответы (2)


Добавьте следующие строки в файл vue.config.js, если файл не существует, создайте его в корневой папке вашего проекта.

module.exports = {
 //...
 pluginOptions: {
  electronBuilder: {
    preload: 'src/preload.js',
    // Or, for multiple preload files:
    // preload: { preload: 'src/preload.js', otherPreload: 'src/preload2.js' }
  }
 }
 //...
}

Дополнительные сведения о # preload- файлы

person Moumen Lahmidi    schedule 21.01.2021

Решение оказалось проще, чем ожидалось. Импорт работает в window.onload событии.

window.onload = () => {
  const { dialog } = require("electron").remote;

  window.electron = {};
  window.electron.dialog = dialog; // now set properly
};
person Jan Vorisek    schedule 06.06.2019
comment
Я все еще не могу заставить это работать ... require (electronics) возвращает undefined здесь. - person Enrico Borba; 20.09.2020