2016-03-08 34 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">