Saya ingin melayani index.html
dan /media
subdirektori sebagai file statis. File indeks harus disajikan di /index.html
dan/
URL.
saya sudah
web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));
tetapi baris kedua tampaknya melayani keseluruhan __dirname
, termasuk semua file di dalamnya (bukan hanya index.html
danmedia
), yang tidak saya inginkan.
Saya juga mencoba
web_server.use("/", express.static(__dirname + '/index.html'));
tetapi mengakses URL dasar /
kemudian mengarah ke permintaan untuk web_server/index.html/index.html
(dua kali lipatindex.html
komponen ), yang tentu saja gagal.
Ada ide?
Ngomong-ngomong, saya sama sekali tidak menemukan dokumentasi di Express tentang topik ini ( static()
+ paramsnya) ... membuat frustrasi. Tautan dokumen juga diterima.
express.static()
ditangani olehserve-static
paket middleware. Anda dapat menemukan dokumennya di npmjs.com/package/serve-static atau github.com/expressjs/serve-static .Jawaban:
express.static()
mengharapkan parameter pertama menjadi jalur direktori, bukan nama file. Saya akan menyarankan membuat subdirektori lain untuk menampung Andaindex.html
dan menggunakannya.Melayani file statis di Express dokumentasi , atau dokumentasi yang lebih terperinci
serve-static
, termasuk perilaku default penyajianindex.html
:sumber
express.static
diharapkan satu parameter menjadi jalur ....Jika Anda memiliki pengaturan ini
Maka ini harus mendapatkan apa yang Anda inginkan
Caranya adalah meninggalkan garis ini sebagai fallback terakhir
Mengenai dokumentasi, karena Express menggunakan connect middleware, saya merasa lebih mudah untuk hanya melihat kode sumber connect secara langsung.
Misalnya baris ini menunjukkan bahwa index.html didukung https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140
sumber
Application.configure()
didokumentasikan sebagai warisan dalam 3.x dan dihapus pada 4.x. Lihat jawaban ChrisCantrell untuk contoh yang diperbarui.__dirname
? Apa nilainya?Dalam versi terbaru express, "createServer" sudah tidak digunakan lagi. Contoh ini cocok untuk saya:
sumber
__file__
yang Anda gunakan denganos.path.dirname(os.path.realpath(__file__))
public/teams/logo.png
?res.sendFile
&express.static
Keduanya akan bekerja untuk iniDimana
public
folder tempat kode sisi klien beradaSeperti yang disarankan oleh @ATOzTOA dan diklarifikasi oleh @Vozzie ,
path.join
mengambil jalur untuk bergabung sebagai argumen, argumen tersebut+
dilewati satu argumen ke jalur.sumber
path.join
mengambil path untuk bergabung sebagai argumen,+
melewati satu argumen ke path.path.join(public + 'index.html')
menjadipath.join(public, 'index.html')
Dan sementara itu, ubah__dirname + "/public/"
menjadipath.join(__dirname, 'public')
sumber
sumber
gunakan di bawah ini di dalam app.js Anda
(folderName adalah folder yang memiliki file) - ingat aset ini diakses langsung melalui jalur server (yaitu http: // localhost: 3000 / abc.png (di mana seperti abc.png ada di dalam folder folderName)
sumber