Process.platform返回"win32"表示运行在Windows系统上。在Windows系统上,用户的主目录可能是C:\Users[USERNAME]或C:\Documents and Settings[USERNAME],这取决于所使用的Windows版本。在Unix系统中,这不是一个问题。
Process.platform返回"win32"表示运行在Windows系统上。在Windows系统上,用户的主目录可能是C:\Users[USERNAME]或C:\Documents and Settings[USERNAME],这取决于所使用的Windows版本。在Unix系统中,这不是一个问题。
如较新的回答中所述,现在首选的方式只是:
const homedir = require('os').homedir();
[Translated Answer] 在win32系统中,为什么不使用USERPROFILE
环境变量?
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
path.resolve()
进行包装可能会在尾随斜杠、潜在的奇怪正斜杠/反斜杠等方面提供一些规范化(特别是在获取此信息后,如果您考虑文件操作)。 - Frank Nos.homedir()
被加入到Node.js的4.0.0公共版本中,相关PR请参阅此处。
示例用法:
const os = require('os');
console.log(os.homedir());
os.homedir()
是一个相当新的工具。 - Cody Allan Taylor使用该特性而不是变量值更为准确。尤其是因为 Windows 中存在 2 种可能的变量。
function getUserHome() {
return process.env.HOME || process.env.USERPROFILE;
}
编辑:正如最近的一个回答中提到的那样,https://dev59.com/p2ox5IYBdhLWcg3wnlpI#32556337 是正确的方式(require('os').homedir()
)。
\users\name
,而USERPROFILE则为c:\users\name
。因此,这种方法不如@maerics的方法准确和健壮。 - PA.使用osenv.home()
。它由isaacs维护,我相信npm自身也在使用它。
getUserRootFolder() {
return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
在某些情况下尝试使用这个:
this.process.env.USERPROFILE
或者
this.nw.process.env.USERPROFILE
即在处理之前添加此代码或this.nw代码