我正在使用express.js并且已经构建了一些基本功能但是如果URL比root中的一个目录长,那么从错误的位置出现快速静态服务有问题。请参阅以下示例。
我使用正常记录的方法来使用静态。
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:3000
或localhost:3000/login
等页面,那么一切都很顺利。即使我点击localhost:3000/foo
的未定义路线,我也会在所有图像存在的情况下正确渲染404。
但是如果我继续前进并执行localhost:3000/login/foo
之类的操作,所有图像都会丢失,我将在浏览器控制台中收到以下地址的错误。
http://localhost:3000/login/img/site-brand.png
在使用多个目录定义的路由上也会发生相同的情况。
我在快递网站上解释了文档,无论调用静态图像是什么,它都将从root目录中的公共目录提供,其中包含js,img和css目录。
我的问题是,我误解了什么?以及我如何表达始终相对于root服务?
答案 0 :(得分:7)
我写了整个问题然后意识到当我在.ejs文件中设置src=""
标签时,我使用了相对路径,而不是绝对路径。而不是删除问题,我决定回答它并将其发布给其他人。
因此,不应使用src="img/my-image.png"
,而应使用src="/img/my-image.png"
前导斜杠表示请求相对于root而不是发出请求的路径。
那里的基本网络开发。我应该第一次看到它,但它已经很晚了,而我正忙着填满新的框架,这反过来又挤掉了我小脑子里那些琐碎的东西。