У меня есть 3 файла в следующей структуре:
- root.js
- mod1.js
- mod2.js
mod1.js и mod2.js оба требуются / создаются в root.js, а оба mod1.js и mod2.js требуют ("root.js");Так что я могу выполнять обратные вызовы для публичных функций в root.js ... У меня проблема в том, что const root = require ("root.js");это либо {}, либо пустой объект как в mod1.js, так и в mod2.js.Особенно, когда я добавляю больше кода в mod1 и mod2, они оба оказываются {}
Снимок экрана ошибки можно увидеть здесь: https://github.com/DarceyLloyd/NodeAppArchitecture/blob/master/issue.png
Так что вопрос в том, какая структура или какой коддостигает возврата каждого класса / функции / объекта правильно во время реализации?Структурные изменения?Я проверил это с помощью функции keyup, сопоставленной с телом, поэтому при нажатии spac eit требуется root.js, а затем он прекрасно выполняет свою функцию getA, однако это происходит только при нажатии клавиши, а не во время создания экземпляра класса / функции / объекта /создание.Идеи?
Все файлы можно посмотреть здесь: https://github.com/DarceyLloyd/NodeAppArchitecture
А для справки: stackoverflow:
root.js
`` `` var Root= function () {this.a = -1;this.b = -1;
const mod1 = require("./mod1.js"); // Runs 2nd?
const mod2 = require("./mod2.js"); // Runs 1st?
function init(){
this.a = 0;
this.b = 0;
}
this.incA = function() { this.a++; }
this.incB = function() { this.a++; }
this.getA = function() { return this.a; console.log(a); }
this.getB = function() { return this.b; console.log(b); }
init();
}
// Кэшированный вывод, так что new всегда вызывается только один раз module.exports = new Root ();`` ``
mod1.js
`` `` var Mod1 = function () {const root = require ("./ root.js");
function init(){
console.log("Mod1()");
console.log(root); // result is {}
//root.incA(); // error incA doesn't exist on object root
}
init();
}
// Кэшированный вывод, так что new всегда вызывается только один раз module.exports = new Mod1 ();`` ``
mod2.js
`` `` var Mod2 = function () {const root = require ("./ root.js");
function init(){
console.log("Mod2()");
console.log(root); // result is {}
//root.incB(); // error incB doesn't exist on object root
}
init();
}
// Кэшированный вывод, так что new всегда вызывается только один раз module.exports = new Mod2 ();`` `` `