Глобальный объект недоступен в пользовательских модулях, даже когда передан и запрошен - PullRequest
0 голосов
/ 09 ноября 2019

route1.js код:

var express = require('express');
var app = express();
var router = express.Router();
var module1 = require('../modules/module1.js'); // custom module

    var globals = {
        a : 'A',
        b : 'B',
        c : 'C'
    };

router.post('/data', function(req, res){
  var data = req.body.form_input;
  // here we update the globals object with the data, mutate it or something
});

module.exports = {
    router : router,
    globals : globals
};

module1.js код:

var route1 = require ('../routes/route1.js');

console.log(route1.globals); // not working!?

Почему глобальный недоступен в module1даже когда я экспортирую его в route1 с помощью module.export?

EDIT:

Когда мне требуется, возникает циклическая зависимость: var module1 = require ('../ modules / module1.js');а затем в модуле 1 требуется: var route1 = require ('../routes/route1.js');

, поэтому он переходит с модели 1 на маршрут 1, затем снова на модель 1 и маршрут 1 и так далее. Благодаря добавлению дополнительного модуля - globals.js и добавлению его в module1 и route1 проблема решается - благодаря @ Rashomon.

1 Ответ

1 голос
/ 09 ноября 2019

Я думаю, что у вас есть круговая зависимость здесь. Круговыми зависимостями сложно управлять, и в большинстве случаев это признак неадекватной архитектуры. Я предлагаю вам переместить globals в один файл с именем globals.js.

. Здесь приведен минимальный пример проблемы циклической зависимости: https://codesandbox.io/s/damp-hill-94gdg?fontsize=14

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...