快速静态服务错误路径

时间:2015-09-19 22:05:00

标签: node.js express static

我正在使用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:3000localhost:3000/login等页面,那么一切都很顺利。即使我点击localhost:3000/foo的未定义路线,我也会在所有图像存在的情况下正确渲染404。

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

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

在使用多个目录定义的路由上也会发生相同的情况。

我在快递网站上解释了文档,无论调用静态图像是什么,它都将从root目录中的公共目录提供,其中包含js,img和css目录。

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

1 个答案:

答案 0 :(得分:7)

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

因此,不应使用src="img/my-image.png",而应使用src="/img/my-image.png"前导斜杠表示请求相对于root而不是发出请求的路径。

那里的基本网络开发。我应该第一次看到它,但它已经很晚了,而我正忙着填满新的框架,这反过来又挤掉了我小脑子里那些琐碎的东西。