2016-04-01 19 views
0

node js express kullanıyorum. Bu js dosyasının aynı dizinde bulunan bir metin dosyasına erişmeye çalışıyorum. dosya yapısı i denedim budosya node js içinde bulunamadı (Intellij)

- ProjectFolder 
    | 
    - many modules and folders 
    - routes 
    | 
    - Index.js 
    - input.txt 

Basit kod,

var data = fs.readFile('~/IdeaProjects/Title/routes/input.txt'); 
console.log("Synchronous read: " + data.toString()); 

console.log("Program Ended"); 

böyle gider yüzden farklı yollar ama hiçbir şey inşaat çalıştım. Bilgileriniz için fedora'yı os olarak kullanıyorum.

i got hata oldu,

Error: ENOENT: no such file or directory, open '~/IdeaProjects/Title/routes/input.txt' 
at Error (native) 

i okumak ve dosyanın içeriğini yazabilir hem böylece bu dosyayı erişme hakkında herhangi bir öneri, karşılanacaksınız. Detaylı cevabı arıyorum.

+0

Bir dosya 'Input.txt' varsa, içinde' input.txt' kullanıyoruz kodu. –

+0

Yoldaki hatanın yanı sıra kodda da bir hata var. "readFile", eşzamansız bir işlevdir, dolayısıyla geri arama olmadan sonuç alamazsınız. Senin durumunda - 'readFileSync' olmalıdır. – alexmac

cevap

3

Düğüm $HOME gibi ~ veya kabuk değişkenleri gibi özel anlam içeren bazı karakterlerin yorumlamak değil, bu nedenle göreli bir yol (örneğin IdeaProjects/Title/routes/input.txt) mutlak bir yol almak veya kullanmak üzere path.resolve() gibi bir şey kullanmak gerekecektir. Ayrıca, @Gothdo'nun belirttiği gibi, dosya adına, büyük/küçük harfe duyarlı dosya sistemlerinde sorunlara neden olacak bir tutarsızlık söz konusudur.

Ayrıca ya şöyle fs.readFile() için fs.readFileSync() için fs.readFile() değiştirebilir veya geri arama eklemek gerekir:

fs.readFile('~/IdeaProjects/Title/routes/input.txt', function(err, data) { 
    if (err) throw err; 
    console.log("Synchronous read: " + data.toString()); 
    console.log("Program Ended"); 
}); 
+0

Bu iyi mi? fs.readFileSync (path.resolve (~/IdeaProjects/Foodie/rotalar ', '../girdi.txt')); – arvind

+0

Önceki yorumdan filereadsync kodunu kullandım ve bir hata aldım, yol tanımlanmamış. Neden? – arvind

+0

Eğer 'path.resolve()' kullanıyorsanız, önce 'path' modülüne bir referans eklemelisiniz:' var path = require ('path'); '. – mscdex