Express4中文文档
路由将匹配紧随其路径的任何路径,并带有 "/
"。例如:app.use('/apple', ...)
将匹配 "/apple"、"/apple/images"、"/apple/images/news" 等。
由于 path
默认为 "/",因此对于应用程序的每个请求,都会执行没有路径挂载的中间件。例如,这个中间件函数将为应用程序的每个请求执行:
app.use(function (req, res, next) {
console.log('Time: %d', Date.now())
next()
})
注意
子应用程序将:
- 不继承具有默认值的设置值。您必须在子应用程序中设置该值。
- 继承设置的值,没有默认值。
详见 应用程序设置。
中间件功能是按顺序执行的,因此中间件包含的顺序很重要。
// this middleware will not allow the request to go beyond it
app.use(function (req, res, next) {
res.send('Hello World')
})
// requests will never reach this route
app.get('/', function (req, res) {
res.send('Welcome')
})
错误处理中间件
错误处理中间件总是需要四个参数。您必须提供四个参数以将其标识为错误处理中间件函数。即使您不需要使用 next
对象,您也必须指定它来维护签名。否则,next
对象将被解释为常规中间件,无法处理错误。有关错误处理中间件的详细信息,请参见:错误处理.
以与其他中间件函数相同的方式定义错误处理中间件函数,除了使用四个参数而不是三个参数,特别是使用签名 (err, req, res, next)
):
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})