Есть две проблемы с вашим фрагментом кода:
- круговая зависимость
- module.exports.id - это не тот же объект, что и идентификатор переменной в приложении. js
Чтобы решить первую проблему, вы должны создать третий файл, в котором будет объявлена переменная, и другие модули будут использовать его.
Теперь, чтобы проиллюстрировать вторую проблему посмотрите на следующее.
// testModule.js
let variable = 0;
function get_variable() {
return variable;
}
module.exports = {variable, get_variable};
// app.js
const testModule = require('./testModule.js');
testModule.variable = 1234;
console.log(testModule.variable); // will print '1234'
console.log(testModule.get_variable()); // will print '0'
Это небольшое недопонимание модулей может привести к тонким неприятным ошибкам. Я считаю, что лучшим решением для решения этой проблемы было бы не экспортировать свойство 'variable' напрямую, а иметь функции getter / setter в модуле, почти как преобразование его в классоподобную вещь.
// testModule.js
let variable = 0;
function get_variable() {
return variable;
}
function set_variable(value) {
variable = value;
}
module.exports = {get_variable, set_variable};