Gle*_*and 3 static node.js express
我正在使用express.js并且已经构建了一些基本功能但是如果URL比root中的一个目录长,那么从错误的地方发出快速静态服务的问题.请参阅以下示例.
我使用正常的文档方法来使用静态.
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
并设置了几条路线.例如.
app.get('/signup', function(req, res) {
res.render('signup.ejs');
});
Run Code Online (Sandbox Code Playgroud)
在链的末端有一个404捕获.
app.get('*', function(req, res){
res.status(404).render('404');
});
Run Code Online (Sandbox Code Playgroud)
如果我打的网页,例如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服务?
我写了整个问题然后意识到,当我src=""在.ejs文件中设置标签时,我使用了相对路径,而不是绝对路径.而不是删除问题,我决定回答它并将其发布给其他人.
所以不src="img/my-image.png"应该使用它应该是src="/img/my-image.png"前导斜杠表示请求是相对于root而不是发出请求的路径.
那里的基本Web开发.我应该第一次看到它,但它已经很晚了,而我正忙着填满新的框架,这反过来又挤掉了我小脑子里那些琐碎的东西.