Quasar CLI with Webpack - @quasar/app-webpack

Electron 访问文件

使用 __dirname & __filename

由于主进程打包时使用 Esbuild,所以使用 __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 的一大好处是能够访问用户的文件系统。这使您能够在本地系统上读写文件。为了解除 Chromium 的限制进行读写应用的内部文件,您可以使用 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')

访问 Public 目录

如果出于某种原因,您将一些重要的文件存放在了 /public 目录下,那么您可以通过以下代码访问它。为了理解这段代码为什么可以访问到它,请阅读上述的“使用 __dirname & __filename”部分。

// electron-main or electron-preload

import path from 'path'

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