2016-11-18 14 views
0

我有一個模塊實現一個服務,使用一些中間件,它需要做一些處理,例如,您能否從不同的模塊多次使用中間件?

module.exports = function(options) { 
    ... 
    app.use(busboy()) 
    ... 
    return module 
} 

如果我有另一個模塊需要使用相同的中間件,它將進行相同的調用。每個模塊都是插件,並不知道其他任何模塊,並且爲插件可能使用的每個中間件創建一個全局變量似乎不是一個好的設計。根據這個question的答案,看起來似乎不太容易檢查中間件是否已經加載。

現在,沒有一件中間件被用在多個地方,但如果將來它確實會造成問題呢?如果是這樣,解決方案是什麼?

回答

1

如果您需要爲特定路由器/路由使用特定中間件,請將其僅包含在路由器/路由中,而不是應用範圍內。

因此,不是這樣的:

app.use(middleware); 

您可以使用此:

let router = express.Router(); 

router.use(middleware); 
router.get('/', ...); 

// and return/export the router 

使用routers也使您的應用程序更加模塊化。

+0

當我進行此更改時,有問題的路由不再顯示存在...是否還有其他需要添加的內容? – Michael

+0

@Michael完全取決於你的app/routes的結構。 – robertklep

+0

好的,所以我還有一些其他調用app.get,app.use和app.post,它們來自這個特定模塊之前和之後。當我使用一個應該匹配這條特定路線的網址時,它現在完成了我的捕捉。我如何解決爲什麼它不再處理請求使用這個特定的路線? – Michael

相關問題