web-dev-qa-db-ja.com

Node.js-プラットフォームに依存しない方法でホームディレクトリを見つける

Process.platformは、Windowsの場合「win32」を返します。 Windowsでは、使用しているWindowsのバージョンに応じて、ユーザーのホームディレクトリはC:\ Users [USERNAME]またはC:\ Documents and Settings [USERNAME]になります。 Unixでは、これは問題ではありません。

172
Matthew

より最近の回答 で述べたように、好ましい方法は単純です:

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

[元の回答]:なぜwin32でUSERPROFILE環境変数を使用しないのですか?

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

os.homedir() が追加されました このPRによる であり、nodejsのパブリック4.0.0リリースの一部です。


使用例:

const os = require('os');

console.log(os.homedir());
214

まあ、変数値ではなく機能に依存する方がより正確です。特に、Windowsには2つの変数が考えられます。

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

編集:最近の回答で述べたように、 https://stackoverflow.com/a/32556337/103396 正しい方法です(require('os').homedir())。

78
Oncle Tom

osenv.home()を使用します。 isaacsによって維持されており、npm自体によって使用されていると思います。

https://github.com/isaacs/osenv

15
getUserRootFolder() {
  return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
0
aH6y