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");});
新闻热点
疑难解答