快递加载相对于网址的图片

时间:2017-07-04 00:39:27

标签: html node.js image express loading

我正在使用express建立一个相当基本的网页。但是,我的图像路径有问题。

此代码工作正常。

app.use(express.static(path.join(__dirname, "/app/public/")));
app.get("/overview", function(req, res) {    
    res.render('some-file');    
});

在some-file.ejs里面我有......

<img src="assets/images/picture.jpg">

但是,当我有第二个网址时,它无效。

app.get("/overview/specific", function(req, res) {    
    res.render('another-file');    
});

<img src="assets/images/picture.jpg">

在这个示例中,我试图加载完全相同的图像(在我的情况下,它是一个在每个页面上重复使用的横幅)。这给了我一个错误,找不到图像。我从控制台错误中注意到的是,图像是从localhost:3000 / overview / assets / images / picture.jpg加载的。 我不明白为什么快递试图从第一条路径加载图像(在这种情况下概述)。概述不应该在路径中! 任何人都可以帮我调试这个问题吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

尝试使用/assets/images/picture.jpg

在路径前添加/。然后它将/app/public/作为根,并确保图像位于:

/app/public/assets/images/picture.jpg

现在,无论您想要picture.jpg,只需传递此绝对路径。

答案 1 :(得分:0)

我们使用ExpressJS重定向动态提供favicons,效果非常好。

首先,我们使用基于req.hostname的快速查找从内存中检索站点对象,然后发送此响应:

res.redirect(site.favicon);

favicon变量可以是我们服务器上的静态资产,也可以是其他服务器上的资产。我们的前端代码只调用/ api / resources / favicon,它会收到正确的链接。