Bagaimana cara saya menulis ini untuk kembali ke level induk 2 untuk menemukan file?
fs.readFile(__dirname + 'foo.bar');
javascript
node.js
filesystems
mewah
sumber
sumber
fs.readFile(__dirname + '/../../foo.bar');
dan berhasil.__dirname
itu adalah sesuatu seperti'/foo/bar'
bukan'/foo/bar/'
.__dirname
mungkin terlihat seperti/path/to/your/dir
, jika Anda mengatakan__dirname + ".."
itu/path/to/your/dir..
, yang merupakan direktori tidak ada, bukan/path/to/your
. Tebasan itu penting.Gunakan path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
path.join()
akan menangani garis miring / garis depan untuk Anda dan hanya melakukan hal yang benar dan Anda tidak perlu mencoba mengingat ketika garis garis miring ada dan ketika garis miring tidak ada.sumber
path.join
cara yang benar, jawaban yang diterima tidak harus diikuti, bahkan memicueslint
padaairbnb-base preset
, aturan tidak ada jalan-concat khususnya__dirname
adalahhost/src/folder
dan saya butuhkanhost/folder
dan ini bekerja untuk saya, bukan jawaban OP.path.join(__dirname, '..', '..', 'foo.bar')
Saya tahu ini agak pilih-pilih, tetapi semua jawaban sejauh ini kurang tepat.
Titik path.join () adalah untuk menghilangkan kebutuhan pemanggil untuk mengetahui pemisah direktori mana yang harus digunakan (membuat platform kode agnostik).
Secara teknis jawaban yang benar adalah:
Saya akan menambahkan ini sebagai komentar untuk jawaban Alex Wayne tetapi belum cukup perwakilan!
EDIT: sesuai observasi user1767586
sumber
Cara termudah adalah menggunakan
path.resolve
:sumber
../
ke pathSepertinya Anda akan membutuhkan
path
modul. (path.normalize
khususnya)sumber
Jika modul lain memanggil modul Anda dan Anda masih ingin tahu lokasi file utama sedang dijalankan, Anda dapat menggunakan modifikasi kode @ Jason:
Dengan begitu Anda akan mendapatkan lokasi skrip benar-benar dijalankan.
sumber
Jika Anda tidak positif di mana orang tua berada, ini akan memberi Anda jalan;
sumber
Kamu bisa memakai
sumber
Saya menjalankan aplikasi elektron dan saya bisa mendapatkan folder induk dengan path.resolve ()
level induk 1:
path.resolve(__dirname, '..') + '/'
level induk 2:
path.resolve(__dirname, '..', '..') + '/'
sumber
ini juga akan berfungsi:
sumber