var exPRess = require('express');var path = require("path");var app = express();app.set('views', './views');app.set('view engine', 'pug');//通過app.use使用中間件,在接收到請求后,按中間件定義順序依次執行,除非發生異常或者通過res.end完成響應。/*中間件是一個函數,分為兩類,常規中間件和錯誤處理中間件常規中間件有兩個或者三個參數,分別是req,res,[next],其中next可省略錯誤處理中間件有四個參數,分別是err, req, res, next,其中next不可省略在執行過程中發生異常或者next調用時傳入一個參數將會執行錯誤處理中間件。無論錯誤處理中間件還是常規中間件,都可以通過next繼續向下傳遞。*/app.use(function(req, res, next) { console.log("Request ip: " + req.url); console.log("Request date: " + new Date()); next();});var staticPath = path.join(__dirname, "static");app.use(express.static(staticPath));app.use(function(req, res) { res.status(404); res.send("File not found!");});//log the error.app.use(function(err, req, res, next){ console.log(err.message); next();});//錯誤處理中間件,當以上某中間件發生異常或者在next調用中傳入參數,則會進入錯誤處理中間件。app.use(function(err, req, res, next) { res.status(500); res.send("Internal server error.");});app.listen(80, function() { console.log("App started on port 80");});
新聞熱點
疑難解答