Node.js - प्लेटफ़ॉर्म अज्ञेयवादी तरीके से घर निर्देशिका खोजें


214

Windows के लिए Process.platform रिटर्न "win32"। विंडोज पर एक उपयोगकर्ता के घर की निर्देशिका C: \ Users [USERNAME] या C: \ Documents and Settings [USERNAME] हो सकती है, इस पर निर्भर करता है कि Windows का कौन सा संस्करण उपयोग किया जा रहा है। यूनिक्स पर यह एक मुद्दा नहीं है।


क्या मैक ओएस एक्स यूनिक्स विधि को बनाए रखता है या इसके लिए कुछ अलग भी आवश्यक है?
हिप्पिट्रैसिल

2
@hippietrail मैक ओएस एक्स, हर दूसरे यूनिक्स की तरह होम का उपयोग करता है।
मारन लाईबो-कोसर

जवाबों:


330

जैसा कि हाल के एक उत्तर में बताया गया है , पसंदीदा तरीका अब बस है:

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

[मूल उत्तर] : USERPROFILEwin32 पर पर्यावरण चर का उपयोग क्यों नहीं करें ?

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

धन्यवाद। बस स्थानीय रूप से Node.js स्थापित किया गया है, क्योंकि Cloud9 पर एक मूल सर्वर का निर्माण मेरे छोटे ट्यूटोरियल (निश्चित रूप से) का पालन नहीं कर रहा है ... और मेरे पास कोई आईडीईए नहीं है जहां मेरी फाइलें रखी जाएं। आप आदमी हो! (मुझे लगता है)
स्टीव

0.10.33 जीत 64 बिट में यह काम नहीं करता है। मेरे पास USERPROFILE और HOME C पर सेट है: मेरी कंपनी मुझे एक HOMEDRIVE / HOMEPATH सेट करने के लिए बाध्य करती है, जो एक नेटवर्क शेयर H पर सेट है। किसी कारण से नोड एच पसंद करते हैं:।
एंगस

9
मेरे पास इस जवाब के लिए एक स्पष्ट रूप से नकारात्मक प्रतिक्रिया है और दूसरा सबसे लोकप्रिय है। यदि आप नोड.जेएस का उपयोग कर रहे हैं, तो IMHO, आपको npm मॉड्यूल का समर्थन करना चाहिए जैसे os.homedir () और osenv.home () (दोनों नीचे उल्लेखित हैं)। यदि आप os.homedir () के लिए स्रोत को देखते हैं, तो आप देखेंगे कि यह सरल नहीं है।
लैरी मैकचेरोन

यह एक मंच अज्ञेय साधन नहीं है।
माइकल

रैपिंग path.resolve()स्लैश, संभावित विषम आगे / बैकस्लैश, आदि के संदर्भ में कुछ सामान्यीकरण प्रदान कर सकता है ... (विशेषकर यदि आपको इस जानकारी को प्राप्त करने के बाद फ़ाइल संचालन को ध्यान में रखा गया हो)
फ्रैंक नॉक

237

os.homedir()इस पीआर द्वारा जोड़ा गया था और यह नोडज के 4.0.0 रिलीज के सार्वजनिक भाग का हिस्सा है।


उदाहरण का उपयोग:

const os = require('os');

console.log(os.homedir());

ढेर अतिप्रवाह में आपका स्वागत है! कृपया अपने उत्तर को एक प्रश्न के रूप में उत्तर देना सुनिश्चित करें , प्रश्न नहीं।
डुर्रोन 597

2
समझ गया। जोड़े गए स्रोत क्योंकि os.homedir()एक सुंदर रफ़ू नया खिलौना है।
कोडी एलन टेलर

8
इसे संगत क्रॉस प्लेटफॉर्म के रूप में स्वीकार किया जाना चाहिए
याह्या उद्दीन

2
आपको const os = require('os');भी जोड़ना होगा
Roel

81

खैर, यह सुविधा पर भरोसा करने के लिए अधिक सटीक होगा न कि एक चर मूल्य पर। विशेष रूप से विंडोज के लिए 2 संभावित चर हैं।

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

EDIT : जैसा कि एक और हालिया उत्तर में बताया गया है, https://stackoverflow.com/a/32556337/103396 जाने का सही तरीका है ( require('os').homedir())।


1
मेरी विंडोज 7 मशीन पर, HOMEPATH और USERPROFILE एक ही चीज़ लौटाते हैं (C: \\ Users \\ Username)। घर अपरिभाषित देता है। मेरे मैक होम में / उपयोगकर्ता / उपयोगकर्ता नाम और HOMEPATH और USERPROFILE अपरिभाषित हैं।
बेन क्लेटन

1
मेरी विंडोज 7 मशीन पर, HOMEPATH रिटर्न \users\nameऔर USERPROFILE है c:\users\name। इसलिए यह तरीका @maerics
PA के

15

का उपयोग करें osenv.home()। यह isaacs द्वारा बनाए रखा गया है और मेरा मानना ​​है कि इसका उपयोग npm द्वारा ही किया जाता है।

https://github.com/isaacs/osenv


1
oshomeos-homedirहुड के तहत उपयोग करता है , अगर आप केवल उस कार्यक्षमता चाहते हैं।
19-06 को spiffytech

0
getUserRootFolder() {
  return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.