0
我正在構建中間件處理程序,並且我發現當您將route
字符串作爲next
回調的參數返回時,它的值爲null
。嵌套路由器不會返回值爲'route'的下一個回調
這裏的例子:
var express = require('express')
var app = express()
app.use('/', function (req, res, next) {
var router = express.Router()
router.use(function (req, res, next) {
return next('route')
})
return router(req, res, function (nextValue) {
console.log('// value of next')
console.log(nextValue)
return next(nextValue)
})
})
app.use('/', function (req, res, next) {
return res.send('hi')
})
module.exports = app
這意味着你不能僅僅通過一個處理像這樣:
app.use('/', function (req, res, next) {
var router = express.Router()
router.use(function (req, res, next) {
return next('route')
})
return router(req, res, next)
})
我知道這看起來非常多餘的,因爲你可以這樣做:
app.use('/', function (req, res, next) {
return next('route')
})
但是我正在建立一個庫,需要以這種方式使用嵌套的中間件。看來,我唯一的選擇是因爲如果我這樣做是爲了使用不同的字符串:
router.use(function (req, res, next) {
return next('anystring')
})
的next
回調並提供nextValue
與anystring
。
爲什麼字符串route
不能通過嵌套中間件傳播?
這看起來好像它實際上是有道理的快遞不返回route
,因爲在該點路線完成的路線。