當我在“/”和“/home”頁面上時,Express 可以很好地提供我的靜態檔案,但是當我轉到“/home/download”時,我的檔案不再提供。我使用 EJS 來呈現我的頁面。
router.get("/download", isAuthed, (req, res) => {
res.render("download", {
username: req.user.username,
discordId: req.user.discordId,
avatar: req.user.avatar,
discriminator: req.user.discriminator
})
})
這是我的 /home 路由器
這是我告訴 express 為我的公共檔案夾提供服務的地方
app.use(express.static(path.join(__dirname, "public")))
如果我遺漏了什么可以幫助您找出問題所在,請告訴我,謝謝。
更新:當在 /home 頁面上按下鏈接時,我會切換到 /home/download 頁面
<a href="/home/download">Download</a>
如果這是導致無法提供檔案的原因,我該如何更改頁面。
uj5u.com熱心網友回復:
這是因為您網頁中的鏈接是相對鏈接(不要以 開頭/),它告訴瀏覽器在請求它們之前將當前頁面的路徑添加到它們的 URL 中。這會弄亂您的靜態路由處理。
舉個例子,如果你有這樣的事情:
<img src="image.jpg">
然后,當您打開時/home/download,瀏覽器會請求:
/home/image.jpg
這不適用于您的express.static()代碼,因為影像不在public/home/image.jpg
通常的解決方法是/在 HTML 中添加到所有靜態資源 URL 的前面,這樣瀏覽器在請求時不會將當前頁面的路徑添加到 URL 中。
<img src="/image.jpg">
如果您需要進一步的幫助,請向我們展示資源的實際 HTML,并向我們展示您的服務器檔案系統中的所有內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363249.html
上一篇:摩卡測驗通過但斷言或期望失敗
