app.use не работает в другом классе Express - PullRequest
0 голосов
/ 03 декабря 2018

я пытаюсь использовать экземпляр приложения в другом файле js, но не знаю, почему он не работает, ниже приведен пример кода (я использую экспресс 4)

app.js

    const app = express();
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    const bodyParser = require('body-parser')
    const jsonParser = bodyParser.json({ limit: '10mb' }) //{
    const urlEncoded = bodyParser.urlencoded({ limit: '10mb', extended: true }) //

    app.set('superSecret', config.secret)
    app.disable("x-powered-by")
  //oauth file
   var oauth= require('./services/oauth');

    module.exports = app

в файле service / oauth index.js

 module.export.oauth2app=oauth2app
  const oauth2app =require('../../app')
  oauth2app.use('/',router);  //its not working

почему oauth2app.use не работает в index.js, он выдает ошибку, как будто oauth2app.use не работает, любой орган может сказать мне, что я делаю неправильно

1 Ответ

0 голосов
/ 03 декабря 2018

У вас круговая зависимость.app.js загружает service / oauth / index.js, а затем этот файл пытается загрузить приложение.Вы не можете сделать это.Второе, которое вызывает циклический цикл, вернет {} и, следовательно, {}.use() не будет работать.

Обычное решение здесь - передать объект app в ваш сервис / oauth / index.js.модуль в экспортированной функции конструктора модуля вместо того, чтобы пытаться загрузить приложение.

    const app = express();
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    const bodyParser = require('body-parser')
    const jsonParser = bodyParser.json({ limit: '10mb' }) //{
    const urlEncoded = bodyParser.urlencoded({ limit: '10mb', extended: true }) //

    app.set('superSecret', config.secret)
    app.disable("x-powered-by")

    // oauth file 
    // pass app to module constructor function
    require('./services/oauth')(app);

И затем в файле oauth вы экспортируете функцию, которая используется для инициализации модуля:

// this should get called by whoever loads us and they should
// pass us the app object.
module.exports = function(app) {
      app.use('/', router);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...