Expressでnext('route')をコールしてmiddlewareをスキップしたときに404になる
謎の現象
Expressで↓のような書き方をした際に、
app.post('/hoge', function(req, res, next) { console.log('middleware1'); next('route'); }, fuction(req, res, next) { console.log('middleware2'); next(); }, function(req, res) { res.send({}); });
middleware1でnext('route')
と書くことで、middleware2をスキップして、最後のres.send()
実行されることを期待しますが、
奇妙なことに404エラーになってしまうという現象が起きました。
解決法
にある通り、
app.post('/hoge', function(req, res, next) { console.log('middleware1'); next('route'); }, fuction(req, res, next) { console.log('middleware2'); next(); }); app.post('/hoge', function(req, res) { res.send({}); });
とmiddlewareとrouteのハンドラを明確に分ける必要があるとのことです。
最初は上手く動いていた気がするのですが、最近仕様が変わったのだろうか。。