Process.platform 为 Windows 返回“win32”。在 Windows 上,用户的主目录可能是 C:\Users[USERNAME] 或 C:\Documents and Settings[USERNAME],具体取决于所使用的 Windows 版本。在 Unix 上,这不是问题。
如 a more recent answer 中所述,现在首选的方法很简单:
const homedir = require('os').homedir();
[原答案] 为什么不在win32上使用USERPROFILE
环境变量?
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
os.homedir()
添加了 by this PR 并且是 nodejs 的公共 4.0.0 版本的一部分。
示例用法:
const os = require('os');
console.log(os.homedir());
os.homedir()
是一个相当不错的新玩具。
好吧,依靠特征而不是变量值会更准确。特别是因为 Windows 有 2 个可能的变量。
function getUserHome() {
return process.env.HOME || process.env.USERPROFILE;
}
编辑:如最近的回答中所述,https://stackoverflow.com/a/32556337/103396 是正确的方法 (require('os').homedir()
)。
\users\name
并且 USERPROFILE 有 c:\users\name
。所以这种方法不像@maerics'那样准确和健壮
使用 osenv.home()
。它由 isaacs 维护,我相信 npm 本身使用它。
https://github.com/isaacs/osenv
oshome
会在底层使用 os-homedir
。
getUserRootFolder() {
return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
在某些情况下尝试使用这个:
this.process.env.USERPROFILE
或者
this.nw.process.env.USERPROFILE
即在处理之前添加 this 或 this.nw
不定期副业成功案例分享
path.resolve()
可能会在尾部斜杠、可能奇怪的正斜杠/反斜杠等方面提供一些规范化......(特别是如果您在获得此信息后考虑到文件操作)