electron - 使用 electron-builder 的 snap 安装程序的默认主目录
问题描述
我目前正在构建一个电子应用程序,.deb
并.snap
使用电子构建器构建安装程序。在应用程序内部,出于某种原因,我需要访问用户主目录,并且我正在使用process.env.HOME || process.env.USERPROFILE
它来获取主目录(也app.getPath('home')
返回相同)。这适用于其他情况,但是当应用程序使用.snap
, 而不是实际的 home( /home/username
) 目录安装时,它将~/snap/<app_name>/3/
作为主目录返回。(3
是快照修订号)
/home/username
在所有情况下如何获取实际的主目录( )?
解决方案
请注意,这~/
不是有效路径;它$HOME
由外壳扩展。/home/username
在大多数情况下,您正在寻找的实际路径将是。一个简单的解决方案是简单地假设它是主目录。
为了防止主文件夹不在此位置的情况,我们应该询问操作系统:
操作系统模块
const os = require("os");
const user_name = os.userInfo().username;
const user_dir = os.userInfo().homedir;
console.log(user_name, user_dir);
os.userInfo() 返回的 homedir 的值由操作系统提供。这与 os.homedir() 的结果不同,后者在返回操作系统响应之前查询主目录的环境变量。
posix模块
(原始答案)如果由于某种原因上述方法不起作用,您可以明确使用getpwnam
从以下位置查找实际主目录/etc/passwd
:
const posix = require("posix");
const os = require("os");
const user_name = os.userInfo().username;
const user_dir = posix.getpwnam(user_name).dir;
console.log(user_name, user_dir);
您需要先安装posix
模块:
npm install posix
推荐阅读
- asp.net - 在 asp.net 上加载 ReactJS 视图问题与图像路径
- reactjs - 热重载无法与 React-Redux 和 Hooks 一起正常工作
- html - 如何使网格居中并将上方的行与其左侧对齐?
- javascript - 在离线桌面应用程序上显示 ZIP 存档中的图像的最有效方法是什么?
- php - 如何忽略laravel中的所有相关数据
- k6 - 在默认功能中禁用某些调用
- python - 无法获取包含请求的 url
- angular - 如何在 Angular 中包含本地库?
- python - 如何显示最大速率
- python - 在 msys2 中构建 AGG 导致错误 Invalid configuration `x86_64-pc-msys': system `msys' not Recognized