সারমর্ম
নোড.জেএস-এ, __dirnameসর্বদা সেই ডিরেক্টরি যেখানে বর্তমানে সম্পাদনকারী স্ক্রিপ্টটি থাকে (এটি দেখুন )। সুতরাং আপনি যদি টাইপ __dirnameকরেন /d1/d2/myscript.js, মান হবে /d1/d2।
বিপরীতে, .আপনি যে ডিরেক্টরিটি থেকে nodeআপনার টার্মিনাল উইন্ডোতে কমান্ডটি চালিয়েছিলেন (যেমন আপনার কার্যনির্বাহী ডিরেক্টরি) আপনি যখন লাইব্রেরি ব্যবহার করেন pathএবং তা দেয় fs। প্রযুক্তিগতভাবে, এটি আপনার কার্যক্ষম ডিরেক্টরি হিসাবে শুরু হয় তবে এটি ব্যবহার করে পরিবর্তন করা যেতে পারে process.chdir()।
ব্যতিক্রমটি যখন আপনি ব্যবহার .করবেন তখন require()। ভিতরে requireথাকা পথটি সর্বদা কল থাকা ফাইলের সাথে সম্পর্কিত require।
উদাহরণ স্বরূপ...
ধরা যাক আপনার ডিরেক্টরি কাঠামোটি
/dir1
/dir2
pathtest.js
এবং pathtest.jsরয়েছে
var path = require("path");
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));
এবং তুমি কর
cd /dir1/dir2
node pathtest.js
তুমি পাও
. = /dir1/dir2
__dirname = /dir1/dir2
আপনার ওয়ার্কিং ডিরেক্টরিটি /dir1/dir2তাই যা .সমাধান হয়। যেহেতু এটির মধ্যেও সমাধান হয় যা এর pathtest.jsমধ্যে অবস্থিত ।/dir1/dir2__dirname
তবে আপনি যদি স্ক্রিপ্টটি চালান /dir1
cd /dir1
node dir2/pathtest.js
তুমি পাও
. = /dir1
__dirname = /dir1/dir2
সেক্ষেত্রে, আপনার কাজের তালিকা ছিল /dir1যাতে এটা কি .করার সংকল্প কিন্তু __dirnameএখনও সমাধান করা থেকে /dir1/dir2।
.ভিতরে ব্যবহার করা হচ্ছে require...
ভিতরে যদি dir2/pathtest.jsআপনি একটি আছে requireমধ্যে কল একটি ফাইল অন্তর্ভুক্ত ভিতরে dir1আপনি হবে সবসময় কি
require('../thefile')
কারণ ভিতরে থাকা পথটি requireসর্বদা সেই ফাইলের সাথে সম্পর্কিত যেখানে আপনি এটি কল করছেন। এটি আপনার কার্যকরী ডিরেক্টরিটির সাথে কোনও সম্পর্ক রাখে না।