2016-07-27 62 views
0
app.get(`/`, (req, res, next) => { 
     console.log(`in/get`); 
     const indexHtml = path.resolve(__dirname + '/../public/index.html'); 
     res.sendFile(indexHtml); 
     next(); 
    }); 

我試圖讓這個index.html顯示在我的家鄉路線使用快遞,但它沒有加載。我得到控制檯日誌,並且我已經控制日誌indexHTML以確保路徑正確,但是我得到的只是一個無法獲得的錯誤。 我帶來的所有其他路線都工作正常。只是不是這個人。NodeJS響應不發送index.html

+1

難道你不能只使用[express.static](http://expressjs.com/en/4x/api.html#express.static)? – MayorMonty

+0

在此字符串的開頭缺少引號標記:'/../ public/index.html''這應該導致可見的錯誤。另外,你可能希望路徑是''../ public/index.html''而不帶前導斜槓,並且想要使用'path.join()',而不是'path.resolve()'。 – jfriend00

+1

而且,許多引號看起來不對。它們看起來像回刻號,而不是普通的單引號。 – jfriend00

回答

1

刪除next()之後的電話res.sendFile()。您希望res.sendFile()完全處理響應,但調用next()會將控制權交給其他處理程序,可能會以404處理程序結束,並且因爲該程序不必讀取該磁盤,所以在res.sendFile()工作之前就會處理它。

當您發送響應時,您不想調用next(),因爲您不希望鏈中的更多請求處理程序運行。