在Electron和Vue中加载预加载脚本

时间:2019-06-06 12:50:56

标签: vue.js electron vue-cli-3 electron-builder

我正在使用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;

在我的Vue组件中始终未定义window.electron.dialog-导入显然不起作用。请注意,window.electron的定义正确。我一定很想念东西。

2 个答案:

答案 0 :(得分:1)

将以下几行添加到文件 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-files

答案 1 :(得分:0)

解决方案比预期的要简单。在window.onload事件中导入工作。

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

  window.electron = {};
  window.electron.dialog = dialog; // now set properly
};