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.