Node.js - Найти домашний каталог в зависимости от платформы - PullRequest
167 голосов
/ 31 января 2012

Process.platform возвращает «win32» для Windows.В Windows домашним каталогом пользователя может быть C: \ Users [ИМЯ ПОЛЬЗОВАТЕЛЯ] или C: \ Documents and Settings [ИМЯ ПОЛЬЗОВАТЕЛЯ] в зависимости от используемой версии Windows.В Unix это не проблема.

Ответы [ 5 ]

263 голосов
/ 31 января 2012

Как уже упоминалось в более позднем ответе , предпочтительный способ теперь прост:

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

[Исходный ответ] : почему бы не использовать USERPROFILE переменная окружения на win32?

function getUserHome() {
  return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
212 голосов
/ 14 сентября 2015

os.homedir() был добавлен этим PR и является частью публичной версии 4.0.0 nodejs.


Пример использования:

const os = require('os');

console.log(os.homedir());
78 голосов
/ 23 апреля 2013

Что ж, было бы точнее полагаться на функцию, а не на переменное значение.Тем более, что для Windows есть две возможные переменные.

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

EDIT : как уже упоминалось в более недавнем ответе, https://stackoverflow.com/a/32556337/103396 - верный путь (require('os').homedir()).

15 голосов
/ 08 ноября 2014

Используйте osenv.home(). Он поддерживается isaacs, и я думаю, что используется самим npm.

https://github.com/isaacs/osenv

0 голосов
/ 31 марта 2019
getUserRootFolder() {
  return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
...