node.js - 处理库依赖关系的正确方法

标签 node.js express

我无法决定/确定将依赖项传递到我的 Express 路由的标准/最佳方法是什么。我遇到的问题是我的一些库有与之关联的绑定(bind),即。我的 session 管理器已连接到我的 redis 队列客户端。我的日志有相应的配置设置等。

这是我的路线:

// Include routes and endpoints
app.use(require('./routes/account')(queue, models, log));
app.use(require('./routes/message')(queue, models, log));
app.use(require('./routes/admin')  (queue, models, log));

如您所见,我将依赖项作为参数传递。我还没有开始编写单元测试,但我怀疑当我到达那里时这会带来更多痛苦。

我想做的另一件事是将库附加到我的请求对象,如下所示:

req.log = log;
req.nconf = nconf;
req.sessions = sessions;

我不确定的是:a)最佳/标准实践是什么,b)这些方法是否会影响性能/内存使用,c)这将如何影响我 future 的单元测试。

对此的任何见解都会很棒!

谢谢。

最佳答案

我会在应用程序级别设置它们:

app.set('queue', queue)

然后将您的应用程序传递给路由函数:

app.use(require ('./routes/admin')(app))

然后检索:

queue = app.get('queue')

关于node.js - 处理库依赖关系的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28610155/

相关文章:

node.js - 在 express 中从 POST 请求处理程序发送 WebSocket 消息

java - 如何保护将由 Java 应用程序调用的 AWS API Gateway 终端 Node ?

javascript - 使 SQLite 错误具体化,而不仅仅是 express/node.js 中的 SQLITE_ERROR

javascript - Promise.map 中的异步方法

node.js - 在 Heroku 上部署 Node.js 应用程序

javascript - 导入 Node 模块时出现 TypeScript 编译器错误?

node.js - req.body 中的对象属性键与客户端 (Express) 不同

javascript - 如何修复使用 Sequelize Node Express Mysql 插入数据库的问题?

typescript - 如何使用 webpack 捆绑 puppeteer 进行生产部署?

node.js - 将 Jquery UI 与express.js 结合使用