Vue.js 如何在类星体vue组件环境中使用require(';electron';)?

Vue.js 如何在类星体vue组件环境中使用require(';electron';)?,vue.js,electron,quasar,Vue.js,Electron,Quasar,如何从渲染器端模块(如运行在Quasar框架内的vue组件)中访问主electron process fs模块 我在一个组件中尝试了一些变化,出现以下错误: const { app } = require('electron') vue router.esm.js?8c4f:1897类型错误:fs.existsSync不是函数 const { app } = window.require('electron') TypeError:window.require不是函数 const { app

如何从渲染器端模块(如运行在Quasar框架内的vue组件)中访问主electron process fs模块

我在一个组件中尝试了一些变化,出现以下错误:

const { app } = require('electron')
vue router.esm.js?8c4f:1897类型错误:fs.existsSync不是函数

const { app } = window.require('electron')
TypeError:window.require不是函数

const { app } = window.require('electron')

在查看了我的朋友Google之后,我仍然在搜索如何从运行在quasar框架下的vue组件中访问electron主进程函数的答案。任何人任何人我看过一些github文件探索器的示例,但根据electron文档,似乎只需调用fs.readdirSync()之类的东西的实现应该比我在这些实现中看到的要简单得多

答案超出了我对所有这些组件如何协同工作的理解。希望这能帮助其他人加快开发Quasar/Vue/Electron应用程序的速度。如果您使用

const electron = require('electron')
quasar dev
您将获得一个与主进程通信的浏览器(渲染器),该进程无法处理节点主进程之类的内容:

const electron = require('electron')
const fs = require('fs')

const files = fs.readdirSync('/')
console.log(files)
  • 我找不到一个清晰、简洁、简单的方法。似乎有一个webpack配置可以提供相同的“深度”集成,但我正在寻找一个更现成的解决方案
如果你启动你的应用程序

quasar dev -m electron

您获得了深度集成,现在可以“require()”或在您的Quasar应用程序的Vue组件中导入上述模块。

Quasar文档中解释了您的问题

Quasar建议使用预加载脚本将渲染器进程中需要的节点API(即:BrowserWindows)附加到全局窗口对象

  • 将预加载脚本附加到浏览器窗口(主进程)
  • src electron/electron-main.js:

    import path from 'path'
    win = new BrowserWindow({
      ...
      webPreferences: {
        preload: path.resolve(__dirname, 'electron-preload.js')
      }
    })
    
  • 将节点API附加到全局窗口(预加载脚本)
  • src-electron/electron-preload.js:

    window.electron = require('electron')
    
  • 通过全局窗口使用节点API(渲染器进程)
  • somefile.vue

    window.electron.ipcRenderer.sendSync(
       'message',
       payload
    )
    

    当我把我得到的那一行包括进来的时候:TypeError:fs.existsSync不是一个函数好吧,这就是我所能说的:(对quasar和electron一无所知。但是如果要求模块的语法是正确的,否则你的例子:)我熟悉标准实现,这就是为什么我在quasar的上下文中特别提出这个问题的原因,vue和electron是我遇到困难的地方。谢谢当我构建ios应用程序时,同样的错误会弹出。ios平台
    类型错误:i.existsSync不是一个函数。(在“i.existsSync(o)”中,“i.existsSync”未定义)