javascript - Electron 将我的应用程序数据存储在 'userData' 路径中

标签 javascript node.js electron user-data

我正在构建并尝试部署打包的 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/

相关文章:

node.js - Google Storage nodejs 上传 MIME TYPE

reactjs - 将 Electron 应用转移到 Cordova 应用

javascript - 如何从桌面通知中覆盖或删除签名 "electron.app.Electron"

javascript - 在 JSDoc 中记录开放式参数函数的正确方法

javascript - 悬停时放大图像的智能方法

javascript - Express 没有方法配置错误

javascript - 我需要将参数从另一个任务传递给 gulp 任务,或者用 runSequence 调用的函数替换任务

visual-studio-code - 无法运行VSCode源代码,因为它无法在目录中找到 Electron 应用程序

javascript - 如果内容为空,如何隐藏 iframe

javascript - 无法在 JavaScript 对象字面量中定义变量