Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用电子&x27;s app.getPath()来存储数据吗?_Javascript_Electron - Fatal编程技术网

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
    用户的主目录
  • appData
    每用户应用程序数据目录,默认情况下指向:

    %Windows上的APPDATA% Linux上的$XDG\u CONFIG\u HOME或~/.CONFIG ~/Library/macOS上的应用程序支持

  • userData
    用于存储应用程序配置文件的目录,默认情况下,它是附加应用程序名称的appData目录

这就是我认为你应该做的:

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”