我想在用户计算机上存储图像,因此我认为它应该存储在用户数据文件夹中,如here所述。
app.getPath(name)
name
。返回String - 指向与name关联的特殊目录或文件的路径。失败时会抛出错误。您可以通过名称请求以下路径:
home
用户的主目录Windows上的
appData
每个用户的应用程序数据目录,默认情况下指向:%APPDATA% Linux上的$ XDG_CONFIG_HOME或〜/ .config 〜/ macOS上的库/应用程序支持
userData
用于存储应用配置文件的目录,默认情况下,它是附加了应用名称的appData目录。- ...
这就是我认为你应该做的事情:
const app = require('electron');
alert(app.getPath('userData'));
但我得到" getPath不是一个功能"。我不知道该把它放在哪里。它不适用于我的html文件或渲染器文件,并且我不确定如何从主文件中使用它,因为它没有链接到网页。
答案 0 :(得分:13)
通过this
计算出来const remote = require('electron').remote;
const app = remote.app;
console.log(app.getPath('userData'));
答案 1 :(得分:8)
remote
被认为是危险的。
app.getPath
将在 main
进程中始终可用。
这里是如何在不使用 remote
(electron 7+) 的情况下在渲染器进程中做到这一点
基本上你必须在渲染器中使用 invoke
。
在main
ipcMain.handle('read-user-data', async (event, fileName) => {
const path = electron.app.getPath('userData');
const buf = await fs.promises.readFile(`${path}/${fileName));
return buf
})
在renderer
ipcRenderer.invoke('read-user-data', 'fileName.txt').then(result=> doSomething());
答案 2 :(得分:0)
防止错误“ getPath不是函数”的另一种方法是使代码在渲染器进程和主进程中均起作用:
const electron = require('electron');
const configDir = (electron.app || electron.remote.app).getPath('userData');
console.log(configDir);
答案 3 :(得分:0)
这是我需要在开发和发布之间切换时使用的
const electron = require('electron');
export const userDataPath = (electron.app || electron.remote.app).getPath(
'userData'
);
答案 4 :(得分:0)
我在使用 app.getPath('userData')
保存/加载配置文件等方面遇到了麻烦,同时最终使用了操作系统特定的环境变量:
const getAppBasePath = () => {
//dev
if (process.env.RUN_ENV === 'development') return './'
if (!process.platform || !['win32', 'darwin'].includes(process.platform)) {
console.error(`Unsupported OS: ${process.platform}`)
return './'
}
//prod
if (process.platform === 'darwin') {
console.log('Mac OS detected')
return `/Users/${process.env.USER}/Library/Application\ Support/${YOUR_APP_NAME}/`
} else if (process.platform === 'win32') {
console.log('Windows OS detected')
return `${process.env.LOCALAPPDATA}\\${YOUR_APP_NAME}\\`
}
}