Node.js - 如何找到桌面路径?
Posted
技术标签:
【中文标题】Node.js - 如何找到桌面路径?【英文标题】:Node.js - How to find the desktop path? 【发布时间】:2019-08-31 23:07:02 【问题描述】:正如提到的Node.js - Find home directory in platform agnostic way问题,我们可以通过以下代码找到主文件夹:
const homedir = require('os').homedir();
但是,无论在 Windows 中使用何种语言,我如何才能找到桌面文件夹?因为在 windows 桌面文件夹名称与语言不同。
【问题讨论】:
其实名字总是Desktop,与语言无关。但是 Windows 会为该文件夹创建一个虚拟别名。在葡萄牙语中是“Área de Trabalho”,但您可以使用 %USERPROFILE%\Desktop 访问 @RobsonFrança 你能写成答案吗,因为这解释得越清楚越好 【参考方案1】:试试这个
const homeDir = require('os').homedir(); // See: https://www.npmjs.com/package/os
const desktopDir = `$homeDir/Desktop`;
console.log(desktopDir);
它应该可以在 Windows 和 MacOS 上运行。
【讨论】:
您的代码中有错误:homeDir !== homedir
【参考方案2】:
实际上,无论语言如何,名称始终是 Desktop。但是 Windows 会为该文件夹创建一个虚拟别名。在葡萄牙语中是“Área de Trabalho”,但您可以使用 %USERPROFILE%\Desktop 访问
【讨论】:
我在寻找找到“桌面”位置的可靠方法时遇到了这个线程。只要我记得,这个答案就是正确的答案。但是,我最近在工作中买了一台新笔记本电脑,在设置过程中的某个时候,它决定在 OneDrive 上同步我的桌面文件夹。因此,我的桌面位置变成了“%USERPROFILE%\OneDrive\Desktop”,而我根本没有“%USERPROFILE\Desktop”目录。我设法撤消了该操作并将桌面移动到我的个人资料目录。但是不再可能盲目地假设该位置是直接位于用户配置文件目录下的文件夹。 当您在 Dropbox 上同步用户文件夹时也可能发生这种情况。我会检查另一种获取该信息的方法。 在搜索npm后,我发现了一个名为“platform-folders”的包。它使用 node-gyp 并使用自 Vista 以来可用的 Windows SHGetKnownFolderPath 函数。此函数使用 REFKNOWNFOLDERID 参数的值 FOLDERID_Desktop 正确返回位置。我考虑引用注册表,但一个 Shell 键中有一个警告,提示不要使用它来查找文件夹,而另一个键似乎不完整。看起来 API 调用是在 Windows 中可靠地找到桌面位置的唯一方法。【参考方案3】:NPM
使用 npm,试试platform-folders
npm install platform-folders
import getPath from 'platform-folders';
console.log(getPath('downloads'));
节点
如果您想使用原始节点执行此操作,以下内容大部分时间都适用于所有主要平台,但有几点需要牢记:
它不具有与homedir()
等效的可靠性,原因如下:
-
所有平台都有主目录,但并非所有平台都有桌面,也不是所有桌面都是文件夹。
homedir()
将始终指向主文件夹,即使在未来版本的平台上,但下面的代码将停止在未来版本更改默认桌面放置位置的平台上工作。
homedir()
即使用户将主目录配置在一个奇怪的位置也可以工作,但如果用户将桌面配置在一个不寻常的位置,则以下操作不起作用。
这可能无法在某些非英语语言环境中的某些平台上运行,但在 Windows 中,桌面可通过所有语言的“桌面”访问。
const os = require('os');
const path = require('path');
const desktopDir = path.join(os.homedir(), "Desktop");
console.log(desktopDir);
示例输出:
C:\Users\jschmoe\Desktop
or
/home/jschmoe/Desktop
【讨论】:
以上是关于Node.js - 如何找到桌面路径?的主要内容,如果未能解决你的问题,请参考以下文章
将“Vanilla”Javascript 库加载到 Node.js 中
我无法弄清楚如何防止在 Node.js 中出现此 CORS 错误 [重复]
[译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js