Reputation: 11623
Process.platform returns "win32" for Windows. On Windows a user's home directory might be C:\Users[USERNAME] or C:\Documents and Settings[USERNAME] depending on which version of Windows is being used. On Unix this isn't an issue.
Upvotes: 308
Views: 168930
Reputation: 156534
As mentioned in a more recent answer, the preferred way is now simply:
const homedir = require('os').homedir();
[Original Answer] Why not use the USERPROFILE
environment variable on win32?
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
Upvotes: 483
Reputation: 1
in some cases try to use this:
this.process.env.USERPROFILE
or
this.nw.process.env.USERPROFILE
i.e. add this or this.nw before process
Upvotes: -1
Reputation: 476
getUserRootFolder() {
return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
Upvotes: 4
Reputation: 3141
os.homedir()
was added by this PR and is part of the public 4.0.0 release of nodejs.
Example usage:
const os = require('os');
console.log(os.homedir());
Upvotes: 289
Reputation: 1879
Well, it would be more accurate to rely on the feature and not a variable value. Especially as there are 2 possible variables for Windows.
function getUserHome() {
return process.env.HOME || process.env.USERPROFILE;
}
EDIT: as mentioned in a more recent answer, https://stackoverflow.com/a/32556337/103396 is the right way to go (require('os').homedir()
).
Upvotes: 83
Reputation: 3616
Use osenv.home()
. It's maintained by isaacs and I believe is used by npm itself.
https://github.com/isaacs/osenv
Upvotes: 16