【问题标题】:"next('route')" doesn't work with ".use()""next('route')" 不适用于 ".use()"
【发布时间】:2015-09-06 00:59:24
【问题描述】:

我在这里做错了什么,还是表示不支持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

【问题讨论】:

    标签: javascript node.js express middleware


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我能看出 .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
      

      【讨论】:

        猜你喜欢
        • 2022-01-04
        • 2020-03-12
        • 2013-03-14
        • 2022-12-15
        • 2019-09-22
        • 2015-08-04
        • 2019-05-15
        • 1970-01-01
        • 2019-07-07
        相关资源
        最近更新 更多