app.use在其他班级快递中不起作用

时间:2018-12-03 06:01:48

标签: node.js express

我尝试在其他js文件中使用应用程序实例,但不知道为什么它不起作用,下面是示例代码(我使用Express 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

在服务/ 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 :(得分:3)

您具有循环依赖关系。 app.js正在加载service / oauth / index.js,然后尝试加载该文件。你不能那样做。导致循环循环的第二个循环将返回if not k,因此{}将不起作用。

通常的解决方案是在导出的模块构造函数中将{}.use()对象传递到service / oauth / index.js模块,而不是尝试加载应用程序。

app

然后,在oauth文件中,导出用于初始化模块的函数:

    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);