[英]How to display static html page with image on Heroku
我正在嘗試在Heroku上顯示具有圖像標簽的html頁面。 該圖像存在,但是我無法弄清楚要使用什么路徑才能找到它。 我嘗試使用的每個絕對路徑都不斷出現404錯誤,並且我無法使用相對路徑,因為它會將其附加到加載html頁面的位置(恰好是/ api / errorcodes / x,其中x是用於查找原始HTML頁面的數字)IE
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);
});
因此目錄結構如下:
views / pages / 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標簽在哪里找到圖片?
好吧,我終於想通了。 如果有人遇到這個問題,答案是:
在聲明任何路由之前,請添加static
中間件:
app.use(express.static(__dirname + '/public'));
“ static
中間件的作用與為要傳遞的每個靜態文件創建一個路由(呈現該文件並將其返回給客戶端)具有相同的效果”-摘自O'Reilly的“使用Node&Express的Web開發”一書。
然后,如果圖像文件位於public/img/logo.png
可以在html文件中使用<img src="/img/logo.png">
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.