[英]nodejs middleware is skipped when called externally
我對Express和Node相對較新,但這似乎是一個非常基本的需求,我正在努力了解它是如何發生的。 非常感謝您提供的解決問題或確定如何解決問題的幫助。
var
express = require('express'),
bodyParser = require('body-parser'),
logger = require('morgan'),
express = require('express'),
app = express();
app.get('/heartbeat', function(req,res) {
res.status(200).json(req.header('host'));
});
// my simple middleware component
app.use(function (req, res, next) {
console.log('made it');
next();
});
// standard middleware components
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
// Start listener
app.listen(4400);
這個簡單的程序確實輸出了我的“ make it”控制台消息,但是當我將所有代碼(減去變量定義)包裝在一個名為start的函數中時:
var
express = require('express'),
bodyParser = require('body-parser'),
logger = require('morgan'),
express = require('express'),
app = express();
var start = function(config) { ... }
exports.start = start;
然后從一個單獨的模塊開始調用,我發現logging和bodyParser模塊似乎執行了,但是我的中間件組件被忽略了。 我正在拔頭發試圖找出原因。
我發現您的代碼有2個問題:
在調用app.get(...)之前必須先調用app.use(),否則不會調用任何中間件。
在自定義中間件中,您需要調用next()或next(error),以便將請求移至下一個中間件。 否則,服務器將永遠掛起。
如果在分離模塊后發布整個代碼,我可以幫助您發現更多問題:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.