Node.js -以平台不可知的方式查找主目录

的过程。Windows平台返回"win32"。在Windows上,用户的主目录可能是C:\Users[USERNAME]或C:\Documents and Settings[USERNAME],这取决于正在使用的Windows版本。在Unix上,这不是问题。

149064 次浏览

正如最近的一个答案中提到的,首选的方式现在很简单:

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

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

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

好吧,依赖于特征而不是变量值会更准确。特别是Windows有两个可能的变量。

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

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

使用osenv.home()。它由isaacs维护,我相信npm自己也在使用。

https://github.com/isaacs/osenv

os.homedir()被添加到通过这个PR中,是nodejs公共4.0.0版本的一部分。


使用示例:

const os = require('os');


console.log(os.homedir());
getUserRootFolder() {
return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}

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

this.process.env.USERPROFILE

this.nw.process.env.USERPROFILE

也就是加上这个或者这个。加工前Nw