Javascript 如何使用电子&x27;s app.getPath()来存储数据吗?
我想将图像存储在用户计算机上,因此我认为它应该存储在用户数据文件夹中,如前所述Javascript 如何使用电子&x27;s app.getPath()来存储数据吗?,javascript,electron,Javascript,Electron,我想将图像存储在用户计算机上,因此我认为它应该存储在用户数据文件夹中,如前所述 app.getPath(名称) 名称。返回字符串-与名称关联的特殊目录或文件的路径。失败时会抛出一个错误。您可以按名称请求以下路径: home用户的主目录 appData每用户应用程序数据目录,默认情况下指向: %Windows上的APPDATA% Linux上的$XDG\u CONFIG\u HOME或~/.CONFIG ~/Library/macOS上的应用程序支持 userData用于存储应用程序配置文件的目
app.getPath(名称)
名称
。返回字符串-与名称关联的特殊目录或文件的路径。失败时会抛出一个错误。您可以按名称请求以下路径:
用户的主目录home
每用户应用程序数据目录,默认情况下指向: %Windows上的APPDATA% Linux上的$XDG\u CONFIG\u HOME或~/.CONFIG ~/Library/macOS上的应用程序支持appData
用于存储应用程序配置文件的目录,默认情况下,它是附加应用程序名称的appData目录userData
const app = require('electron');
alert(app.getPath('userData'));
但我得到“getPath不是一个函数”。我不知道该把它放在哪里。它在我的html文件或渲染器文件中不起作用,我不确定如何在主文件中使用它,因为主文件未链接到网页。由于
远程
方法被视为不推荐使用,如图所示,我建议您这样做:
const{app}=require('electron');
console.log(app.getPath('userData'));
防止错误“getPath不是函数”的另一种方法是使代码在渲染器进程和主进程中都工作:
const electron = require('electron');
const configDir = (electron.app || electron.remote.app).getPath('userData');
console.log(configDir);
下面是我在需要在dev和release之间切换时使用的内容
const electron = require('electron');
export const userDataPath = (electron.app || electron.remote.app).getPath(
'userData'
);
遥控
被认为是危险的
app.getPath
将始终在main
过程中可用
下面介绍如何在渲染器进程中执行此操作,而不使用remote
(electron 7+)
基本上,您必须在渲染器中使用invoke
在main中
ipcMain.handle('read-user-data',异步(事件,文件名)=>{
const path=electron.app.getPath('userData');
const buf=wait fs.promises.readFile(`${path}/${fileName));
返回buf
})
在渲染器中
ipcRenderer.invoke('read-user-data','fileName.txt')。然后(result=>doSomething());
const-app=require('electron')。我猜是app?或者可能是const{app}=require('electron')
这是const{remote}=require('electron')
然后是remote.app.getPath('userData'))
这比stackers的回答更好,因为这在远程设备尚未初始化时也有效。似乎这种方法不是关于开发和发布,而是关于主进程和渲染器进程。使用短路评估可以在主进程和渲染器进程中使用此代码。那么,这个回答与@RedSandma不同吗n的答案?它适用于meI,我得到了未捕获的TypeError:无法读取未定义的属性“getPath”