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)