vue 如何使用Electron 模块

官方demo是

const BrowserWindow = require('electron').remote.BrowserWindow
const newWindowBtn = document.getElementById('frameless-window')

const path = require('path')

newWindowBtn.addEventListener('click', function (event) {
  const modalPath = path.join('file://', __dirname, '../../sections/windows/modal.html')
  let win = new BrowserWindow({ frame: false })
  win.on('close', function () { win = null })
  win.loadURL(modalPath)
  win.show()
})

但是实际怎么加呢? 我把const转为import from的方式导入到需要的页面提示fs模块找不到,webpack配置跳过检测但是Electron会报错。

import BrowserWindow from 'BrowserWindow'
import path  from 'path'
methods: {
    click() {
        const BrowserWindow = BrowserWindow.remote.BrowserWindow
        const modalPath = path.join('file://', __dirname,'../../sections/windows/modal.html')
        let win = new BrowserWindow({ frame: false })
        win.on('close', function () { win = null })
        win.loadURL(modalPath)
        win.show()
    }
}

就是添加一个关闭窗口的按钮

阅读 11.2k
3 个回答

在需要的vue页面中添加

  if (window.require) {
    var ipc = window.require('electron').ipcRenderer
  }

方法里添加

if (window.require) {
    ipc.send('close');
  }

原因:直接require会导致提示找不到fs模块,需要使用window.require,但是在Chrome环境中提示window.require not function所以需要做一次判断
在Electron的main.js里添加

const ipc = require('electron').ipcMain
ipc.on('close', e => mainWindow.close());

window.require 在vue里面显示undefined 我没有用electron-vue 请问这个怎么处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题