Node.js - 以平台无关的方式查找主目录

Mat*_*hew 186 filesystems platform-agnostic platform-independent node.js home-directory

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

mae*_*ics 294

正如最近的回答中所提到的,现在首选的方法是:

const homedir = require('os').homedir();
Run Code Online (Sandbox Code Playgroud)

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

function getUserHome() {
  return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
Run Code Online (Sandbox Code Playgroud)

  • 我对这个答案和第二个最受欢迎的答案有一个内心的负面反应.如果你使用的是node.js,那么恕我直言,你应该喜欢npm模块,如os.homedir()和osenv.home()(两者都在下面提到).如果你查看o​​s.homedir()的源代码,你会发现它不是那么简单. (9认同)

Cod*_*lor 219

os.homedir()由此PR添加,是nodejs的公共4.0.0版本的一部分.


用法示例:

const os = require('os');

console.log(os.homedir());
Run Code Online (Sandbox Code Playgroud)

  • 应该接受答案,因为它是兼容的跨平台 (7认同)
  • 得到它了.添加了源代码,因为`os.homedir()`是一个非常新的玩具. (2认同)
  • 你需要添加`const os = require('os');` (2认同)

Onc*_*Tom 79

那么,依靠特征而不是变量值会更准确.特别是因为Windows有两个可能的变量.

function getUserHome() {
  return process.env.HOME || process.env.USERPROFILE;
}
Run Code Online (Sandbox Code Playgroud)

编辑:正如最近的回答中所提到的,/sf/answers/2278943621/是正确的方法(require('os').homedir()).


And*_*ade 15

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

https://github.com/isaacs/osenv

  • `oshome` 在底层使用 [`os-homedir`](https://www.npmjs.com/package/os-homedir),如果你只想要那个功能的话。 (2认同)