【问题标题】:Passing arguments to require, when loading a router module with express router使用快速路由器加载路由器模块时将参数传递给要求
【发布时间】:2020-09-30 09:36:18
【问题描述】:

这个问题和this很相关。

在我的模块中,我使用以下内容:

const express       = require('express'),
      router        = express.Router();
...
module.exports = router;

我需要访问 app.js 文件中的对象。类似于const routes = require(./routes/route.js)(data)

我尝试了什么

  • module.exports = router(data)req在路由器对象中未定义。

  • 在需要它后在 app.js 中创建了一个 route的实例。但这会导致相同的错误消息。 (像这样:

var route = new Route();
route.data = data
  • 与我提到的文章中的几乎相同,但我不确定我与路由器对象有什么关系。这不起作用:
module.exports = router(data){
// all routes
};

其他信息

我通常在 app.js 中使用这样的路由

const route = require('route.js');
app.use(route);

【问题讨论】:

  • 你需要做module.exports = function (data) {/* code, not routes */}module.exports = (data) => {/*again, NOT routes */}

标签: javascript node.js express


【解决方案1】:

我不确定我是否理解你的问题,但如果你想将数据传递给你需要的模块,你可以这样做:

const express       = require('express'),
      router        = express.Router();

module.exports = function(data) {
   // do stuff with data
   router.get('/', (req, res) => res.send(data))

   return router;
}

// and then in app.js

const router = require('router.js')(/* pass data to router*/);

app.use(router)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2021-04-24
    • 1970-01-01
    • 2023-04-03
    • 2012-10-20
    相关资源
    最近更新 更多