gpt4 book ai didi

node.js - express 静态服务错误路径

转载 作者:搜寻专家 更新时间:2023-10-31 23:32:49 25 4
gpt4 key购买 nike

我正在使用 express.js 并构建了一些基本功能,但如果 URL 长于根目录中的一个目录,我会遇到从错误位置提供快速静态服务的问题。请参阅下面的示例。

我正在使用常规的文档化方法来使用静态。

app.use(express.static(__dirname + '/public'));

并设置了一些路线。例如。

app.get('/signup', function(req, res) {
res.render('signup.ejs');
});

在链的末端有一个 404 捕获。

app.get('*', function(req, res){
res.status(404).render('404');
});

如果我点击诸如 localhost:3000localhost:3000/login 之类的已定义路由的页面,一切都很好。即使我点击了 localhost:3000/foo 的未定义路由,我也会正确渲染 404 并显示所有图像。

但是,如果我更进一步并执行诸如 localhost:3000/login/foo 之类的操作,所有图像都将丢失,我将在浏览器控制台中收到错误消息,地址如下。

http://localhost:3000/login/img/site-brand.png

这种情况同样发生在用多个目录定义的路由上。

我解释了 express 网站上的文档,无论静态图像的调用是什么,它都会从根目录中的公共(public)目录提供服务,该目录包含 js、img 和 css 目录。

我的问题是,我误解了什么?以及如何让 express 始终相对于 root 服务?

最佳答案

我写了整个问题,然后意识到当我在我的 .ejs 文件中设置 src="" 标签时,我使用的是相对路径,而不是绝对路径。我没有删除问题,而是决定回答它并将其发布给其他人。

所以不是使用 src="img/my-image.png" 它应该是 src="/img/my-image.png" 前导斜杠表示请求是相对于根而不是发出请求的路径。

那里有基本的网络开发知识。我应该第一次看到它,但已经晚了,我脑子里塞满了新框架,这反过来又从我的小脑袋里挤出了更琐碎的东西。

关于node.js - express 静态服务错误路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32673697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com