使用 Vite 的 Quasar CLI - @quasar/app-vite
使用 __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
... /public 文件夹的内容
读取和写入本地文件
使用 Electron 的一大优势是可以访问用户的文件系统。这使您能够读取和写入本地系统上的文件。为了帮助避免 Chromium 的限制并写入应用程序的内部文件,请务必使用 Electron 的 API,特别是 app.getPath(name) 函数。此辅助方法可以为您提供系统目录(例如用户的桌面、系统临时文件等)的文件路径。
我们可以使用 userData 目录,该目录专门为我们的应用程序保留,因此我们可以确信其他程序或其他用户交互不应篡改此文件空间。
准备工作
您需要将 @electron/remote
依赖项安装到您的应用程序中
$ yarn add @electron/remote
内容粘贴
然后,在您的 src-electron/electron-main.js
文件中,对以下几行进行一些编辑
import { app, BrowserWindow, nativeTheme } from 'electron'
import { initialize, enable } from '@electron/remote/main' // <-- add this
import path from 'path'
initialize() // <-- add this
// ...
mainWindow = new BrowserWindow({
// ...
webPreferences: {
sandbox: false // <-- to be able to import @electron/remote in preload script
// ...
}
})
enable(mainWindow.webContents) // <-- add this
mainWindow.loadURL(process.env.APP_URL)
// ...
内容粘贴
用法
最后,以下是如何访问文件的示例
import path from 'path'
import { app } from '@electron/remote'
const filePath = path.join(app.getPath('userData'), '/some.file')
内容粘贴
如果您在预加载脚本中导入 @electron/remote
,请记住您需要在实例化 BrowserWindow 的 electron-main.js
中设置以下内容
mainWindow = new BrowserWindow({
// ...
webPreferences: {
// ...
sandbox: false // <-- to be able to import @electron/remote in preload script
}
}
内容粘贴
访问公共文件夹
如果出于某种原因,您在 /public 文件夹中存储了一些重要文件,您可以按照以下代码访问它们。要了解为什么需要以这种方式访问它们,请阅读上面“使用 __dirname & __filename”部分。
import path from 'path'
const publicFolder = path.resolve(__dirname, process.env.QUASAR_PUBLIC_FOLDER)
内容粘贴