电子将我的应用程序数据存储在“ userData”路径中

问题描述 投票:0回答:2

我正在构建并尝试部署一个打包的电子应用程序。对于我使用的包装

  • electron-packager
  • electron-installer-debian
  • electron-installer-dmg
  • electron-winstaller

而且我面临一个小问题,我必须在用户计算机中的某个地方存储这些数据。

我发现良好的做法是在电子方法app.getPath('userData')返回的路径中使用文件夹。

来自docs它是用于存储应用程序配置文件的目录,默认情况下,该目录是附加有应用程序名称的appData目录。

%APPDATA% on Windows
$XDG_CONFIG_HOME or ~/.config on Linux
~/Library/Application Support on macOS

通过我的测试,有时在安装应用程序时不会自动创建此文件夹,而其他时候是,我想知道是否应该创建它。

现在,如果使用以下代码在PC中不存在此文件夹,则我正在退出应用程序

var DatasPath = app.getPath('userData')
if (!fs.existsSync(DatasPath)){
      process.exit()
  }

所以问题是

  • 我应该用DatasPath创建fs.mkdirSync(DatasPath);文件夹,如果它不存在或这样做是“不好的做法”,并且如果我可以创建该文件夹,则必须警告用户我刚刚添加了该文件夹?
javascript node.js electron user-data
2个回答
1
投票

(将我的答复从“评论”扩展到“答案”)

我不知道是否应该创建它,所以我会自动如果没有该文件夹,则使应用程序退出

似乎您从字面上看也使用了“ userData”?它不是名为“ userData”的实际“文件夹”,它是操作系统存储that]应用程序数据的路径。Electron当前在3个操作系统上运行,每个操作系统的功能有所不同。为方便起见,Electron通过创建包装方法app.getPath(name)隐藏这些差异,因此相同的代码将在每个OS上运行。

尝试一下:将下面的行放在main.js脚本中:

console.log(app.getPath('userData'));

/ Users / ********* /库/应用程序支持/ MyCoolApp

(“ *********”将是您的用户帐户名。)

UPDATED:

main.js中运行下面的代码,然后在“ userData”路径指定的文件夹中查找

const fs = require("fs");
const path = require('path');
var datasPath = app.getPath('userData')
var data = "I am the cheese"
var filePath = path.join(datasPath, "savedData.txt")
fs.writeFileSync(filePath, data)

0
投票

pathConfig.js

© www.soinside.com 2019 - 2024. All rights reserved.