Process.platform повертає "win32" для Windows. У домашньому каталозі Windows може бути C: \ Users [USERNAME] або C: \ Документи та налаштування [USERNAME], залежно від того, яка версія Windows використовується. У Unix це не проблема.
Process.platform повертає "win32" для Windows. У домашньому каталозі Windows може бути C: \ Users [USERNAME] або C: \ Документи та налаштування [USERNAME], залежно від того, яка версія Windows використовується. У Unix це не проблема.
Відповіді:
Як було сказано в останній відповіді , тепер кращим способом є просто:
const homedir = require('os').homedir();
[Оригінальний відповідь] : Чому б не використовувати USERPROFILE
змінну середовища у програмі win32?
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
path.resolve()
може забезпечити певну нормалізацію в плані нахилу косої риски, потенційно непарних нахилів вперед / назад, і т. д. ... (особливо, якщо ви маєте на увазі операції з файлами після отримання цієї інформації)
os.homedir()
був доданий цим PR і є частиною публічного випуску nodejs 4.0.0.
Приклад використання:
const os = require('os');
console.log(os.homedir());
os.homedir()
це досить проклята нова іграшка.
const os = require('os');
занадто
Що ж, точніше було б покластися на функцію, а не на змінне значення. Тим більше, що для Windows існує 2 можливі змінні.
function getUserHome() {
return process.env.HOME || process.env.USERPROFILE;
}
EDIT : як уже згадувалося в останній відповіді, https://stackoverflow.com/a/32556337/103396 - це правильний шлях ( require('os').homedir()
).
\users\name
а USERPROFILE має c:\users\name
. Тож цей метод не такий точний і надійний, як @maerics '
Використовуйте osenv.home()
. Він підтримується isaacs, і я вважаю, що використовується самим npm.
oshome
використовує os-homedir
під кришкою, якщо ви хочете лише цю функціональність.