2015-09-06 2 views
1

Я что-то не так здесь делаю или просто не поддерживаю next('route') с .use()?"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 

Update, это тоже:

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 

ответ

0

Согласно дискуссии в node issue #2591: поскольку app.use() определяет промежуточное программное обеспечение, а не «путь», next('route') не имеет смысла при использовании app.use().

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