“next('route')”不适用于“.use()”

时间:2015-09-06 00:59:24

标签: javascript node.js express middleware

我在这里做错了什么,或者表示不支持next('route') .use()

var express = require('express')
var app = express()

app.use([
  function (req, res, next) {
    return next('route')
  },
  function (req, res, next) {
    return res.send('sigma')
  },
])

app.use(function (req, res, next) {
  return res.send('alpha')
})

module.exports = app

这为字符串sigma提供服务,并且应该服务于字符串alpha

更新:刚试过这个并且它也没有用。

var express = require('express')
var app = express()

app.use('/', [
  function (req, res, next) {
    return next('route')
  },
  function (req, res, next) {
    return res.send('sigma')
  },
])

app.use('/', function (req, res, next) {
  return res.send('alpha')
})

module.exports = app

更新,这也是:

var express = require('express')
var app = express()

app.use(function (req, res, next) {
    return next('route')
},
function (req, res, next) {
  return res.send('sigma')
})

app.use(function (req, res, next) {
  return res.send('alpha')
})

module.exports = app

2 个答案:

答案 0 :(得分:0)

我在.all和.use之间唯一的区别是.use默认路径为var express = require('express') var app = express() app.all('/', [ function (req, res, next) { return next('route') }, function (req, res, next) { return res.send('sigma') }, ]) app.all('/', function (req, res, next) { return res.send('alpha') }) module.exports = app

这样可行:

,d

答案 1 :(得分:0)

根据node issue #2591中的讨论:由于app.use()定义了中间件,而不是"路由",next('route')app.use()一起使用时毫无意义