2012-04-12 59 views
7

我正在構建我的第一個流星應用,需要能夠創建一個新的路由處理函數來處理oauth回調。我查看了server.js,發現connect.app上下文在meteor_bootstrap下可用。雖然這似乎不起作用:我可以通過__meteor_bootstrap__.app安裝另一個路由處理程序嗎?

if (Meteor.is_server) { 
    Meteor.startup(function() { 
    var app = __meteor_bootstrap__.app; 
    app.use('/callback',function (req,res) { 
     res.writeHead(404); 
     res.end(); 
     return; 
    }); 
    }); 
} 

想法?

回答

8

該解決方案的問題在於您的中間件放置在堆棧的底部。因此,全部流星處理程序將始終在「/ callback」處理程序之前運行。

一個非常哈克的方式來解決這個問題(直到流星釋放出其應有的路由支持)是在你的處理器拼接ATT堆棧的頂部:

__meteor_bootstrap__.app.stack.splice (0, 0, { 
    route: '/hello', 
    handle: function (req,res, next) { 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end("hello world"); 
     return; 
    }.future() 
}); 
+0

謝謝,作品像一個魅力。 – 2012-06-12 20:04:28

+4

這應該不是必要的後發生以下變化:https://github.com/meteor/meteor/commit/a2d5bfa6dbbecff94877142a57bb212aa7f2a590 – avital 2012-08-20 07:43:53

+0

+1注意到這一點,也爲流星代碼更改。你能澄清一下嗎? – 2013-06-26 03:14:10

2

一些答案導致路由在服務器上不受干擾,而現在不受干擾。這是一個已知的問題,聽起來像路由是待辦事項列表上的熱門項目。

6

您可以用Meteor Router智能實現這一目標包:

Meteor.Router.add({ 
    '/callback': 404 
}) 
+0

這是目前最好的答案。 – wizonesolutions 2013-05-28 14:23:32

相關問題