我在爲子進程提供相同的模塊或對象時遇到問題。 因爲沒有辦法發送一個普通的對象到我的子進程(我只能發送「服務器」,套接字或JSON對象),我試圖創建一個模塊,我需要在我的主app.js ,在它上面設置任何必要的數據,而不是在我的子進程中,我也會要求它。Node.js - 在子進程中需要相同的模塊
問題是,在我的子進程中,我得到了一個不同的oject,而不是我在app.js.中創建的那個oject。我試圖用一個普通的對象,並設置它的屬性,以及一個功能...
//module file
var Data = function(){
this.data = null;
return this;
};
module.exports = Data;
...我用這樣的...
//app.js
var module = require("moduleName")();
module.data = "something";
...然而,在我的孩子的過程中,數據仍然是空
//Child process
var module = require("moduleName")();
console.log(module.data); --> null
兩個文件(app.js和子進程的文件)都在同一個項目,和目錄。
我唯一的客串是,因爲我創造了我的子進程fork()
,它可能使用的模塊不同的緩存...
那麼,有什麼辦法可以實現,得到了相同的對象在我的子進程,還是有辦法發送一個對象(而不是JSON)到我的子進程?
提前致謝!
感謝您的快速答覆!我已經在使用兩者之間的通信線路,但是我提到的方式會更容易一些。 :-)無論如何,我會堅持那個,現在很清楚,我無法達到我提到的方式。 – Dave
@Dave我用一種方式更新了一個答案,以通知子進程某些對象發生了變化,並且每次都發送新的數據。您也可以採用其他方式將數據從子進程發送到父進程。 – rsp
是的,我已經在使用這種方法,但我認爲,如果我在main和子進程之間通過send和on組合進行大量的通信(主要是因爲它只有一個通道可以使用),它可能會減慢子進程,但這只是一個猜測。這就是爲什麼我想在子進程中包含一些東西(這些東西已經在我的app.js中使用),所以我可以提供一些其他的通道(比如使用我已經在應用中啓動的socket.io。 JS) – Dave