2017-03-23 17 views
6

fs modülünde bir yöntem normal node.js/Express uygulamasında çağrıldığında geçerli dizin nedir? Örneğin:Fs modülü işlevleri tarafından kullanılan geçerli dizin nedir?

var fs = require('fs'); 
var data = fs.readFile("abc.jpg", "binary"); 

abc.jpg dosyasını bulmak için kullanılan varsayılan klasör nedir? İçeren komut dosyasının klasör konumuna bağlı mı?

Geçerli dizini sorgulamak için bir yöntem var mı?


Dosyam yapısı şöyledir: members.js olarak

ExpressApp1/ 
      app.js 
      routes/ 
       members.js 

Bir fs.createWriteStream("abc") varsa ve bu düğüm tercüman (aka başlatıldığı dizin var ExpressApp1/

+0

__dirname küresel değişken dosyasının dizin verecek giriş yapmış. –

cevap

10

yılında kuruldu abc dosyası geçerli çalışma dizini), komut dosyasının klasör konumu değil (robertklep).

Ayrıca Geçerli çalışma dizini elde edilebilir: Daha fazla bilgi için

process.cwd() 

, size kontrol edebilirsiniz: https://nodejs.org/api/fs.html

EDIT: Eğer ExpressApp1 dizininde node app.js tarafından app.js başladığım için, her göreceli yol, "ExpressApp1" klasörüne göre olacaktır, bu nedenle fs.createWriteStream("abc"), ExpressApp1/abc'daki bir dosyaya yazmak için bir yazma akışı oluşturur. Eğer ExpressApp1/routes/abc yazmak istiyorsanız, members.js için kod değiştirebilirsiniz: Daha fazla bilgi için

fs.createWriteStream(path.join(__dirname, "abc")); 

:

https://nodejs.org/docs/latest/api/globals.html#globals_dirname

https://nodejs.org/docs/latest/api/path.html#path_path_join_paths

+3

Komut dosyasının bulunduğu dizin değil, 'node' yorumlayıcısının başlatıldığı dizin (geçerli çalışma dizini). – robertklep

+0

@ardilgulez Sorumu deneyimle genişlettim. –

+0

@robertklep evet, haklısınız. Ben düzeltilmeyi bekliyorum. – ardilgulez

İlgili konular