在某个页面上时,Express 不提供我的静态文件
Express isn't serving my static files when on a certain page
当我在我的“/”和“/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 为我的 public 文件夹提供服务的地方
app.use(express.static(path.join(__dirname, "public")))
如果我遗漏了什么可以帮助您找出问题所在,请告诉我,谢谢。
更新:当在 /home 页面上按下 link 时,我切换到 /home/download 页面
<a class="nav-link nav-color mt-4" href="/home/download">Download</a>
如果这是导致文件无法提供的原因,我该如何更改页面。
这是因为您网页中的链接是相对链接(不要以 /
开头),它告诉浏览器将当前页面的路径添加到它们的 URL 之前要求他们。那会搞乱你的静态路由处理。
举个例子,如果你有这样的事情:
<img src="image.jpg">
然后,当您在 /home/download
时,浏览器会请求:
/home/image.jpg
这不适用于您的 express.static()
代码,因为图像不在 public/home/image.jpg
中
通常的解决方法是在你的HTML中所有静态资源URLS的前面添加/
,这样浏览器就不会将当前页面的路径添加到请求时 URL。
<img src="/image.jpg">
如果您需要进一步的帮助,请向我们展示资源的实际 HTML 并向我们展示服务器文件系统中所有内容的位置。
当我在我的“/”和“/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 为我的 public 文件夹提供服务的地方
app.use(express.static(path.join(__dirname, "public")))
如果我遗漏了什么可以帮助您找出问题所在,请告诉我,谢谢。
更新:当在 /home 页面上按下 link 时,我切换到 /home/download 页面
<a class="nav-link nav-color mt-4" href="/home/download">Download</a>
如果这是导致文件无法提供的原因,我该如何更改页面。
这是因为您网页中的链接是相对链接(不要以 /
开头),它告诉浏览器将当前页面的路径添加到它们的 URL 之前要求他们。那会搞乱你的静态路由处理。
举个例子,如果你有这样的事情:
<img src="image.jpg">
然后,当您在 /home/download
时,浏览器会请求:
/home/image.jpg
这不适用于您的 express.static()
代码,因为图像不在 public/home/image.jpg
通常的解决方法是在你的HTML中所有静态资源URLS的前面添加/
,这样浏览器就不会将当前页面的路径添加到请求时 URL。
<img src="/image.jpg">
如果您需要进一步的帮助,请向我们展示资源的实际 HTML 并向我们展示服务器文件系统中所有内容的位置。