我有2個不同的節點腳本... save_info.js
從sse_server.js
導入openConections array
。並且,sse_server.js
從save_info.js
進口function broadcast
。 但是,這導致openConnections array
爲save_info.js
內undefined
。爲什麼是這個,我該如何解決這個問題?節點require()問題需要對方的兩個腳本
save_info.js:
var openConnections = require('../scripts/sse_server.js').openConnections;
function broadcast(result, event, httpObject) {
var result = JSON.stringify(result);
var date = new Date().getMilliseconds();
httpObject.write('id: ' + date + '\n');
httpObject.write('data: { \"' + event + '\":\n');
httpObject.write('data:' + result + '\n');
httpObject.write('data: }' + '\n\n');
}
function db_finish(err, product, numberAffected,
result, event) {
if (err) { console.log(err) }
else {
console.log("Db insert successfull");
openConnections.forEach(function(httpObject) {
broadcast(result, event, httpObject);
});
}
console.log("Numer effected " + numberAffected);
}
module.exports.openConnections = openConnections;
sse_server.js:
var broadcast = require("../data/save_info").broadcast;
var openConnections = [];
for (var model in models){
models[model].find({}).sort({_id: -1}).limit(1).exec(
function (err, result){
broadcast(result, model, res);
});
}
module.exports.broadcast = broadcast;
運行要求在這些文件上相互會使它們每執行兩次。這意味着加載b和b加載a,然後使用...但a沒有定義b,因爲正在使用的實例不是第一個。 – Catalyst
相關問題,解釋語言中處理循環依賴的典型方法是什麼?我能想到的最好的方式是一個C樣式的「標題」,其中「原型」在解析後的某個時刻會「鏈接」。像懶惰的要求。 –