272

Process.platform 为 Windows 返回“win32”。在 Windows 上,用户的主目录可能是 C:\Users[USERNAME] 或 C:\Documents and Settings[USERNAME],具体取决于所使用的 Windows 版本。在 Unix 上,这不是问题。

4

6 回答 6

431

正如在最近的回答中提到的,现在首选的方法很简单:

const homedir = require('os').homedir();

[原答案]:为什么不在USERPROFILEwin32上使用环境变量?

function getUserHome() {
  return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
于 2012-01-31T14:43:47.710 回答
268

os.homedir()由这个 PR添加并且是 nodejs 的公共 4.0.0 版本的一部分。


示例用法:

const os = require('os');

console.log(os.homedir());
于 2015-09-14T01:57:11.583 回答
82

好吧,依靠特征而不是变量值会更准确。特别是因为 Windows 有 2 个可能的变量。

function getUserHome() {
  return process.env.HOME || process.env.USERPROFILE;
}

编辑:正如最近的回答中提到的,https://stackoverflow.com/a/32556337/103396是正确的方法(require('os').homedir())。

于 2013-04-22T21:23:29.890 回答
16

使用osenv.home(). 它由 isaacs 维护,我相信 npm 本身使用它。

https://github.com/isaacs/osenv

于 2014-11-07T21:31:39.937 回答
4
getUserRootFolder() {
  return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
于 2019-03-31T02:28:08.447 回答
-1

在某些情况下尝试使用这个:

this.process.env.USERPROFILE

或者

this.nw.process.env.USERPROFILE

即在处理之前添加 this 或 this.nw

于 2021-06-23T21:56:18.600 回答