Yanıtlar:
Bunu dene:
fs.readFile(__dirname + '/../../foo.bar');
Göreli yolun başındaki eğik çizgiye dikkat edin.
__dirnamegibi somthing '/foo/bar'ziyade '/foo/bar/'.
__dirnamebenzeyebilir /path/to/your/dirderseniz, __dirname + ".."öyle /path/to/your/dir..ziyade, varolmayan bir dizin olan /path/to/your. Eğik çizgi önemlidir.
Path.join adresini kullanın http://nodejs.org/docs/v0.4.10/api/path.html#path.join
var path = require("path"),
fs = require("fs");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
path.join() sizin için önde gelen / sondaki eğik çizgileri ele alır ve sadece doğru olanı yapar ve sondaki eğik çizgiler olduğunda ve yokken hatırlamak zorunda kalmazsınız.
path.joinkabul cevap takip edilmemelidir doğru yoldur, hatta tetikler eslintüzerinde airbnb-base preset, kural no-yol-concat özellikle
__dirnameoldu host/src/folderve ben gerekli host/folderve bu, benim için değil OP cevap çalıştı.
path.join(__dirname, '..', '..', 'foo.bar')
Biraz seçici olduğunu biliyorum, ama şu ana kadar tüm cevaplar doğru değil.
Path.join () yöntemi, arayanın hangi dizin ayırıcısının kullanacağını bilmesi ihtiyacını ortadan kaldırmaktır (kod platformunu agnostik hale getirir).
Teknik olarak doğru cevap şuna benzer:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
Bunu Alex Wayne'in cevabına bir yorum olarak ekledim ama henüz yeterli temsilci değil!
EDIT: kullanıcı başına1767586'nın gözlemine göre
Kullanmanın en kolay yolu path.resolve:
path.resolve(__dirname, '..', '..');
../yola katılarak çözmeniz gerekmez
pathModüle ihtiyacınız olacak gibi görünüyor . ( path.normalizeözellikle)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
Başka bir modül sizinkini çağırıyorsa ve çalıştırılmakta olan ana dosyanın konumunu hala bilmek istiyorsanız, @ Jason kodunda değişiklik yapabilirsiniz:
var path = require('path'),
__parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
Bu şekilde çalıştırılan komut dosyasının konumunu alırsınız.
Ebeveynin nerede olduğu konusunda olumlu değilseniz, bu size yol verecektir;
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');
Elektron uygulamasını çalıştırıyorum ve path.resolve () ile üst klasörü alabilirsiniz
ebeveyn 1 seviyesi:path.resolve(__dirname, '..') + '/'
ebeveyn 2 seviyeleri:path.resolve(__dirname, '..', '..') + '/'
bu da işe yarayacaktır:
fs.readFile(`${__dirname}/../../foo.bar`);
fs.readFile(__dirname + '/../../foo.bar');ve işe yaradı.