web-dev-qa-db-fra.com

Node.js - Trouver le répertoire de base de manière agnostique de plateforme

Process.platform renvoie "win32" pour Windows. Sous Windows, le répertoire de base d'un utilisateur peut être C:\Utilisateurs [NOM D'UTILISATEUR] ou C:\Documents and Settings [NOM D'UTILISATEUR] en fonction de la version de Windows utilisée. Sous Unix, ce n'est pas un problème.

172
Matthew

Comme mentionné dans réponse plus récente , la méthode préférée est maintenant simplement:

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

[Réponse d'origine] : Pourquoi ne pas utiliser la variable d'environnement USERPROFILE sur win32?

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

os.homedir() a été ajouté par ce PR et fait partie de la version 4.0.0 publique de nodejs.


Exemple d'utilisation:

const os = require('os');

console.log(os.homedir());
214
Cody Allan Taylor

Eh bien, il serait plus précis de s'appuyer sur la fonctionnalité et non sur une valeur variable. D'autant qu'il y a 2 variables possibles pour Windows.

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

EDIT: comme mentionné dans une réponse plus récente, https://stackoverflow.com/a/32556337/103396 est la bonne voie à suivre (require('os').homedir()).

78
Oncle Tom

Utilisez osenv.home(). Il est maintenu par isaacs et je crois qu’il est utilisé par npm lui-même.

https://github.com/isaacs/osenv

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