Process.cwd () বনাম __dirname এর মধ্যে পার্থক্য কী?


302

এর মধ্যে পার্থক্য কী

console.log(process.cwd())

এবং

console.log(__dirname);

আমি উভয় একই প্রসঙ্গে ব্যবহার করতে দেখেছি।

উত্তর:


486

process.cwd() বর্তমান ওয়ার্কিং ডিরেক্টরিটি প্রদান করে,

উদাহরণস্বরূপ, আপনি যে nodeআদেশটি থেকে আদেশটি সঞ্চার করেছিলেন তা ।

__dirname জাভাস্ক্রিপ্ট উত্স কোড ফাইল ধারণকারী ডিরেক্টরিটির ডিরেক্টরি নামটি দেয়


5
এর অর্থ কি এই বাদে সব ক্ষেত্রেই process.cwd()প্রতিশব্দ ? .require()
— আলেকজান্ডার গনচি

10
@ আলেকজান্ডারগনচি সঠিক, .বর্তমান process.cwd()(বর্তমানে সমার্থক) এর সাথে সম্পর্কিত, require()যা বর্তমান সম্পাদনকারী ফাইলের সাথে সম্পর্কিত works আরও জন্য এখানে দেখুন।
— বাসিন্দা

1
নোট করুন যে বর্তমান ওয়ার্কিং ডিরেক্টরিটি প্রসেস.চিডির ব্যবহার করে রানটাইমের সময় পরিবর্তন করা যেতে পারে, সুতরাং নোডটি যে ডিরেক্টরিটি থেকে ডাকা হত তা সর্বদা এটি নয়।
— মাস্টারেক্সিলো

84

নোড js ডক হিসাবে process.cwd()

cwdগ্লোবাল অবজেক্টের একটি পদ্ধতি process, একটি স্ট্রিং মান দেয় যা নোড.জেএস প্রক্রিয়াটির বর্তমান কার্যক্ষম ডিরেক্টরি।

নোড js ডক হিসাবে __dirname

স্ট্রিংয়ের মান হিসাবে বর্তমান স্ক্রিপ্টের ডিরেক্টরি নাম। __ডিরনামটি আসলে একটি গ্লোবাল নয় বরং প্রতিটি মডিউলের স্থানীয়।

আমি উদাহরণ দিয়ে ব্যাখ্যা করতে দিন,

মনে করুন আমাদের মধ্যে একটি main.jsফাইল রয়েছে C:/Project/main.js এবং node main.jsএই দুটি মানই একই ফাইলটি ফেরত চলেছে

অথবা কেবল নিম্নলিখিত ফোল্ডার কাঠামো সহ

Project 
├── main.js
└──lib
   └── script.js

main.js

console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true

ধরুন আমাদের script.jsপ্রকল্পের একটি উপ ডিরেক্টরি ডিরেক্টরি C:/Project/lib/script.jsএবং চলমান ভিতরে অন্য ফাইল ফাইল আছেnode main.js যা প্রয়োজনscript.js

main.js

require('./lib/script.js')
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true

script.js

console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project\lib
console.log(__dirname===process.cwd())
// false

9

প্রত্যেকের সুযোগ জানার বিষয়গুলি মনে রাখা সহজ করে তুলতে পারে।

processএটি nodeবিশ্বব্যাপী অবজেক্ট এবং .cwd()যেখানে নোড চলছে সেখানে ফিরে আসে।

__dirnameহয় moduleএর সম্পত্তি, এবং মডিউল এর ফাইল পাথ প্রতিনিধিত্ব করে। নোডে, একটি ফাইলে একটি মডিউল থাকে।

একইভাবে, __filenameঅন্যটির moduleসম্পত্তি, যা মডিউলটির ফাইলের নাম ধারণ করে।


0

$ find proj

proj
proj/src
proj/src/index.js

$ cat proj/src/index.js

console.log("process.cwd() = " + process.cwd());
console.log("__dirname = " + __dirname);

$ cd proj; node src/index.js

process.cwd() = /tmp/proj
__dirname = /tmp/proj/src
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.