Quasar CLI with Webpack - @quasar/app-webpack
Electron存取文件

使用__dirname和__filename

由于主进程是使用webpack绑定的,因此使用__dirname__filename不会在生产中提供预期的值。参考文件树,您会注意到,在生产环境中,electron-main.js和electron-preload.js文件被放置在dist/electron-*文件夹中。根据这些知识,相应地使用__dirname__filename

app.asar
└─ dist
   └─ electron-*
      ├─ js/...
      ├─ icons/
      ├─ node_modules/
      ├─ index.html
      ├─ package.json
      ├─ electron-main.js
      ├─ electron-preload.js
      └─ ...contents of /public

读取和写入本地文件

使用Electron的一大好处是能够访问用户的文件系统。这使您能够读取和写入本地系统上的文件。为了避免谷歌浏览器的限制和写入应用程序的内部文件,请确保使用electron的API,特别是app.getPath(name)函数。此辅助方法可以获取系统目录的文件路径,如用户的桌面、系统临时文件等。

我们可以使用userData目录,它是专门为我们的应用程序保留的,因此我们可以确信其他程序或其他用户交互不应该篡改此文件空间。

// electron-main or electron-preload

import path from 'path'
import { app } from '@electron/remote'

const filePath = path.join(app.getPath('userData'), '/some.file')

如果你在预加载脚本中导入了@electron/remote,那么你需要在electron-main.js中实例化BrowserWindow时设置如下:

mainWindow = new BrowserWindow({
  // ...
  webPreferences: {
    // ...
    sandbox: false // <-- to be able to import @electron/remote in preload script
  }
}

访问Public文件夹

如果出于某种原因,您在/public文件夹中存储了重要文件,您也可以按照下面的代码访问这些文件。要理解为什么需要以这种方式访问它们,请阅读上面的“使用__dirname和__filename”部分。

// electron-main or electron-preload

import path from 'path'

const publicFolder = path.resolve(__dirname, process.env.QUASAR_PUBLIC_FOLDER)