SORU
15 Kasım 2011, Salı


__Dirname ./ arasındaki fark nedir node.js?

Node.js programlama ve bir yerde geçerli dizin ilgili bulunan dosyaları başvururken, 6 ** sadece normal yerine __dirname değişken kullanmak için bir neden var mı? Kullanıyorum/. şimdiye kadar benim kod sadece __dirname varlığını keşfetti ve temelde dönüştürmek için akıllı olup olmayacağını bilmek istiyorum ./'bunun için s, ve eğer öyleyse, neden bu akıllı bir fikir olacaktır.

CEVAP
15 Kasım 2011, Salı


./ geçerli dizin, require() işlevi dışında başvuruyor. require(), kullanırken hangi çağrıldı dosya dizinine ./ çevirir. __dirname her zaman kullanılır dosyasının dizin.

Aşağıdaki dosya yapısı ile örneğin

/home/user/dir/files/config.json

{
  "hello": "world"
}

/home/user/dir/files/somefile.txt

text file

/home/user/dir/dir.js

var fs = require('fs');

console.log(require('./files/config.json'));
console.log(fs.readFileSync('./files/somefile.txt', 'utf8'));

19 ** /home/user/dir node dir.js çalıştırmak alacağım

{ hello: 'world' }
text file

Ama /home/user/ aynı komut çalıştırdığımda alıyorum

{ hello: 'world' }

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: ENOENT, no such file or directory './files/somefile.txt'
    at Object.openSync (fs.js:228:18)
    at Object.readFileSync (fs.js:119:15)
    at Object.<anonymous> (/home/user/dir/dir.js:4:16)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)
    at EventEmitter._tickCallback (node.js:192:40)

./ require ile çalıştı ama fs.readFileSync için değil. Bu durumda basılı belge *28,* ** 29 çevirir /home/user/ çünkü. Ve /home/user/files/somefile.txt yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • expertvillage

    expertvillag

    5 NİSAN 2006
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008