我正在构建并尝试部署打包的 Electron 应用程序。对于我使用的 package
Electron package 器
Electron 安装程序-debian
Electron 安装程序-dmg
Electron 安装程序
我面临一个小问题,我必须将应用程序数据存储在我的用户计算机中的某个位置。
我发现最好的做法是使用 Electron 方法 app.getPath('userData')
返回的路径中的文件夹。
来自 docs
它是用于存储应用程序配置文件的目录,默认情况下它是附加应用程序名称的 appData
目录。
%APPDATA% on Windows
$XDG_CONFIG_HOME or ~/.config on Linux
~/Library/Application Support on macOS
根据我的测试,有时安装应用程序时不会自动创建此文件夹,有时是的,我想知道是否应该创建它。
现在,如果电脑中不存在此文件夹,我将退出应用程序,并使用以下代码
var DatasPath = app.getPath('userData')
if (!fs.existsSync(DatasPath)){
process.exit()
}
所以问题是
- 当
fs.mkdirSync(DatasPath);
不存在或“这样做是不好的做法”时,我是否应该使用fs.mkdirSync(DatasPath);
创建DatasPath
文件夹,并且如果我可以创建一个文件夹,我必须警告用户我刚刚添加了该文件夹吗?
最佳答案
(将我的回复从“评论”扩展为“答案”)
i don't know if i'm supposed to create it or not so i automatically make the app quit if there is not that folder
看来您对“userData”的理解过于字面意思了?它不是一个名为“userData”的实际“文件夹” - 它是操作系统存储该应用程序数据的路径。Electron
目前在 3 个操作系统上运行,每个操作系统每个人的做法不同。为了方便起见,Electron 通过创建 package 方法 app.getPath(name) 隐藏了这些差异,以便相同的代码可以在每个操作系统上运行。
试试这个:将下面的行放入您的 main.js
脚本中:
console.log(app.getPath('userData'));
/Users/*********/Library/Application Support/MyCoolApp
(“************”将是您的用户帐户名。)
更新:
在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)
关于javascript - Electron 将我的应用程序数据存储在 'userData' 路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039792/