Arasındaki fark nedir
console.log(process.cwd())
ve
console.log(__dirname);
Her ikisinin de benzer bağlamlarda kullanıldığını gördüm.
Arasındaki fark nedir
console.log(process.cwd())
ve
console.log(__dirname);
Her ikisinin de benzer bağlamlarda kullanıldığını gördüm.
Yanıtlar:
process.cwd() geçerli çalışma dizinini döndürür,
yani nodekomutu çağırdığınız dizin .
__dirname JavaScript kaynak kodu dosyasını içeren dizinin dizin adını döndürür
Düğüm başına js doc
process.cwd()
cwdbir global nesne yöntemidir process, Node.js işleminin geçerli çalışma dizini olan bir dize değeri döndürür.
Düğüm başına js doc
__dirname
Geçerli betiğin dize değeri olarak dizin adı. __dirname aslında küresel değil, her modül için yereldir.
Örnekle açıklayayım,
varsayalım ki içinde bir main.jsdosya var C:/Project/main.js
ve node main.jsher iki değeri de aynı dosyaya döndürüyoruz
veya sadece aşağıdaki klasör yapısıyla
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
Başka bir dosya olduğunu varsayalım script.jsproje yani bir alt dizinine içindeki dosyaları C:/Project/lib/script.jsve koşmanode main.js gerektirenscript.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
Her birinin kapsamını bilmek şeyleri hatırlamayı kolaylaştırabilir.
process, nodeglobal nesnesidir ve .cwd()düğümün çalıştığı yere döner.
__dirnameolan modulebireyin mülkiyet ve modülün dosya yolunu temsil eder. Düğümde, bir modül bir dosyada bulunur.
Benzer şekilde, modülün dosya adını tutan __filenamebaşka bir moduleözelliktir.
$ 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
process.cwd()eşanlamlı olduğu anlamına mı geliyor ?.require()