2014-03-13 16 views
0

我想從app.get()發送回調變量分叉進程,但是當我這樣做時,我得到以下錯誤:從Express獲取方法發送回調變量到分支進程node.js

類型錯誤:轉換圓形結構,以JSON

這樣做的目的是讓我可以有一個主節點的網絡服務器和丟棄新的應用程序到服務器而無需重新創建新的服務器。下面是造成問題的一些縮寫代碼:

app.get('/apps/*', function(req, res) { 

    req.session.myPath = req.route.params; 
    var progname = new RegExp("(.*?)\\/", "g").exec(req.session.myPath[0])[1]; 

    if (applications.indexOf(progname) != -1) { 
     var appInstance = cp.fork('./apps/'+progname+'/main.js'); 
     appInstance.send({'_req':req,'_res':res}); <-- Error here 
    } 

}); 

有沒有辦法通過這些變量的分叉main.js過程,以允許進程來處理頁面請求,而不是把它放置在傳統的方式app.get回調函數?

回答

0

Is there a way to pass these variables to the forked main.js process to allow that process to handle the page request rather than the traditional way of including it in the app.get callback function?

若它的一個子進程。這些是特定於流程的資源,因此您無法將它們傳遞給其他進程。但是,express具有掛載子應用程序的概念,因此您可以實現一堆單獨的快速應用程序,然後將它們全部掛載到包含應用程序中。否則,您的子應用程序需要提供您可以代理的HTTP接口,但是這可以通過HTTP完成,而不是嘗試將reqres對象直接序列化爲JSON數據。