2016-03-08 60 views
0

我试图在Heroku上显示带有图像标签的html页面。图像存在,但我不知道要使用什么路径,以便它可以找到。我不断尝试使用绝对路径获取404错误,并且我无法使用相对路径,因为它将它附加到HTML页面加载的位置(这恰好是/ api/errorcodes/x,其中x是一个用于查找原始html页面的编号)IE如何在Heroku上显示带有图像的静态html页面

app.get('/api/errorcode/:errorcode', function(request, response) { 
    var errorcode = request.params.errorcode; 
    var doc = 'Error' + errorcode + '.html'; 
    console.log('__dirname = ', __dirname); 
    response.sendFile(__dirname + '/views/pages/' + doc); 
}); 

因此,目录结构如下:

的意见/页/ Error1.html
的意见/页/ Error1.fld/img001.png

而且Error1.html有<img src="/views/pages/Error1.fld/img001.png">和返回404(页面Error1.html加载,但图像在heroku日志中获得404)。

我也尝试过“/app/views/pages/Error1.fld/img001.png”以及将图像移动到/ public,并从那里尝试相同的组合。我如何告诉img标签在哪里可以找到图像?!

回答

0

好吧,我终于明白了这一点。如果任何人遇到这种这里就是答案:

宣布任何路线之前,添加static中间件:

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

“的static中间件具有为每个静态文件创建路由相同的效果,你想要提交呈现文件并将其返回给客户端“ - 摘自O'Reilly的Web Development With Node & Express book。

然后在html文件中,如果您的图像文件位于public/img/logo.png,则可以使用<img src="/img/logo.png">