নোড.জেএস - প্ল্যাটফর্ম অজিনস্টিক উপায়ে হোম ডিরেক্টরি সন্ধান করুন


214

প্রক্রিয়া.প্ল্যাটফর্ম উইন্ডোজের জন্য "win32" প্রদান করে। উইন্ডোজে কোনও ব্যবহারকারীর হোম ডিরেক্টরি সি হতে পারে: [ব্যবহারকারী [USERNAME] বা সি: Windows উইন্ডোজের কোন সংস্করণ ব্যবহৃত হচ্ছে তার উপর নির্ভর করে নথি এবং সেটিংস [USERNAME]। ইউনিক্সে এটি কোনও সমস্যা নয়।


ম্যাক ওএস এক্স ইউনিক্স পদ্ধতিটি ধরে রাখে বা এরও আলাদা কিছু প্রয়োজন হয়?
হিপ্পিট্রেইল

2
@hippietrail ম্যাক ওএস এক্স অন্যান্য ইউনিক্সের মতো হোম ব্যবহার করে।
মার্নেন লাইবো-কোসার

উত্তর:


330

আরও সাম্প্রতিক উত্তরে যেমন উল্লেখ করা হয়েছে , পছন্দের উপায়টি এখন সহজ:

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

[আসল উত্তর] : USERPROFILEউইন 32 এ পরিবেশের পরিবর্তনশীল ব্যবহার করবেন না কেন ?

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

ধন্যবাদ. সবেমাত্র স্থানীয়ভাবে নোড.জেস ইনস্টল করা হয়েছে, কারণ ক্লাউড 9 এ একটি বেসিক সার্ভার তৈরি করা আমার ছোট টিউটোরিয়ালটি (অবশ্যই) অনুসরণ করছে না ... এবং আমার ফাইলগুলি কোথায় রাখার কোনও আইডিইএ নেই। তুমি আসল পুরুষ! (আমি ধরে নিই)
স্টিভ

0.10.33 জিতে 64 বিট এটি কাজ করে না। আমার প্রোফাইফাইল এবং হোম সিটিতে সেট হয়েছে: আমার সংস্থা আমাকে হোম শেয়ার / হোমপ্যাথ নেটওয়ার্ক শেয়ারে সেট করতে বাধ্য করেছে: এইচ। কোনও কারণে নোড এইচ: কে পছন্দ করে।
অ্যাঙ্গাস

9
এই উত্তরটির জন্য আমার দ্বিতীয়বার সবচেয়ে নেতিবাচক প্রতিক্রিয়া রয়েছে এবং দ্বিতীয়টি সবচেয়ে জনপ্রিয়। আপনি যদি নোড.জেএস ব্যবহার করে থাকেন, তবে আইএমএইচও, আপনার এনপিএম মডিউলগুলি যেমন os.homedir () এবং osenv.home () (উভয় নীচে উল্লিখিত) পছন্দ করা উচিত। আপনি যদি os.homedir () এর উত্সটি লক্ষ্য করেন তবে দেখতে পাবেন যে এটি এত সহজ নয়।
ল্যারি ম্যাকেরোন

এটি কোনও প্ল্যাটফর্ম অজিনস্টিক উপায় নয়।
মাইকেল

path.resolve()ট্র্যাশিং স্ল্যাশ, সম্ভাব্য বিজোড় ফরোয়ার্ড / ব্যাকস্ল্যাশস ইত্যাদির ক্ষেত্রে একটি মোড়ানো কিছুটা সাধারণীকরণ সরবরাহ করতে পারে ... (বিশেষত যদি আপনি এই তথ্যটি পাওয়ার পরে ফাইল অপারেশনগুলি পেয়ে থাকেন)
ফ্রাঙ্ক নোক

237

os.homedir()এই পিআর দ্বারা যুক্ত হয়েছিল এবং নোডিজ প্রকাশের 4.0.0 প্রকাশের অংশ of


ব্যবহারের উদাহরণ:

const os = require('os');

console.log(os.homedir());

স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনার উত্তরটি একটি প্রশ্নের উত্তর নয়, উত্তর হিসাবে নিশ্চিত করুন ।
durron597

2
বুঝেছি. যুক্ত সূত্রগুলি কারণ os.homedir()একটি সুন্দর রঙিন নতুন খেলনা।
কোডি অ্যালান টেলর

8
উত্তরটি গ্রহণযোগ্য হওয়া উচিত কারণ এটি সামঞ্জস্যপূর্ণ ক্রস প্ল্যাটফর্ম
ইয়াহিয়া উদ্দিন

2
আপনাকে const os = require('os');খুব যোগ করতে হবে
রোল

81

ঠিক আছে, বৈশিষ্ট্যটির উপর নির্ভর করা আরও সঠিক হবে না ভেরিয়েবলের মান। বিশেষত উইন্ডোজের জন্য সম্ভাব্য দুটি পরিবর্তনশীল রয়েছে।

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

সম্পাদনা : আরও সাম্প্রতিক উত্তরে যেমন উল্লেখ করা হয়েছে, https://stackoverflow.com/a/32556337/103396 হ'ল সঠিক উপায় ( require('os').homedir())।


1
আমার উইন্ডোজ 7 মেশিনে, হোমপথ এবং ব্যবহারকারীরা একই জিনিস (সি: \\ ব্যবহারকারী \\ ব্যবহারকারীর নাম) ফেরত দেয়। হোম রিটার্ন আমার ম্যাকের উপর হোম / রিটার্ন / ব্যবহারকারী / ব্যবহারকারীর নাম এবং হোমপ্যাট এবং ইউএসপি্রফিল ফিরিয়ে দেয় ined
বেন ক্লেটন

1
আমার উইন্ডোজ 7 মেশিনে, হোমপথ ফিরে আসে \users\nameএবং USERPROFILE রয়েছে c:\users\name। সুতরাং এই পদ্ধতিটি @ মায়ারিকস
পিএর

15

ব্যবহার osenv.home()। এটি isaacs দ্বারা রক্ষণাবেক্ষণ করা হয় এবং আমি বিশ্বাস করি যে এনপিএম নিজেই ব্যবহার করে।

https://github.com/isaacs/osenv


1
oshomeos-homedirহুডের নীচে ব্যবহার করে, যদি আপনি কেবল সেই কার্যকারিতা চান।
spiffytech

0
getUserRootFolder() {
  return process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.