2017-08-03 69 views
0
靜態HTML頁面多條路線

我試圖從服務快遞,但而index.html的正確送達我得到一個錯誤2個靜態的HTML頁面,當我嘗試訪問/約路線:在快速

Error: ENOENT: no such file or directory, stat '/var/www/html/myapp/about.html' at Error (native)

var express = require('express'), 
    app = express(), 
    http = require('http'), 
    httpServer = http.Server(app); 

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

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

app.get('/about', function(req, res) { 
    res.sendfile(__dirname + '/about.html'); 
}); 


app.listen(3000); 

我可以將'/about.html'更新爲'/html_files/about.html',然後它可以正常工作,但雖然解決了這個問題,但我無法理解爲什麼它不能正常工作。

+0

你的靜態路由需要指向這樣的文件:'__dirname +'/ html_files/about.html'',不只是:'__dirname +'/ about.html'' – jfriend00

回答

0

看起來正確。

app.get('/'...將被忽略,因爲服務器已經找到與此請求匹配的靜態index.html

app.get('/about'...由於您嘗試發送的文件的網址不正確而失敗。如果您要求/about.html,它會通過靜態中間件正確發送。

+0

請你解釋一下你的意思,因爲我寫了很多例子,並且不能輸入/about.html而不輸入實際的目錄名稱,如果是這樣的話,那麼express.static的目的是什麼?這是行不通的:app.get('/ about',function(req,res){res.sendfile('about.html'); }); –

+0

express.static只是設置目錄,從中默認使用可以直接輕鬆獲取文件。例如。 'http:// example.com/about.html'會返回你的about.html。如果使用靜態,你需要它使用相同的URL,把它放到'/ your_public/about/index.html'。如果您仍然想要'/ about'請求about.html,則需要更多操作。我沒有解決這個實現 – Anarion