Node.js,Express,Redis – 来自不同模块的路由不能被调用

目前正在开发一个分布式系统,昨晚我的代码崩溃了。 我的服务器应用程序有多个模块,每个模块与我的redis dbbuild立连接,但是如果通过主模块进行单一连接,则会更好。 这个,我昨天晚上试图实现,但是我不太清楚究竟是什么问题。 我对这个领域还是比较陌生的,并且已经在SitePoint,Medium和其他博客上search过,并且也在这里检查了我的问题或派生版本,但没有发现什么可以帮助我解决这个问题。

更新2016/6/24 13:18
我从我的代码中删除了app.use() Statement,现在服务器正在启动。 进展:)但是,如果我尝试testing一个路由,我得到的唯一答复是Cannot <METHOD> <ROUTE>
看这个问题在这里给我提供了利用我刚刚从代码中删除的app.use()的答案。 有什么我失踪?

更新2016/6/24 14:05
我实现了语句app.use('/', account_routing.routes); ,不起作用,但似乎是正确的路,不是吗? 我可以发送请求,但是现在没有任何答案。

我正在为我的服务器应用程序提供代码:

main.js

 var express = require('express'), redis = require('redis'), app = express(), port = process.env.port || 3000, rclient = redis.createClient(), account_routing = require('./modules/account_routing'); // ### CONFIGURATION ################################################ rclient.on('connect', function (err, res) { console.log(err || "Connected to database!"); }); account_routing.setClient(rclient); app.use('/', account_routing.routes); // ### FIREUP ####################################################### app.listen(port, function () { console.log('Server available at port ' + port); }); 

account_routing.js

 var rclient, express; express = require('express'); module.exports = { setClient : function (inClient) { 'use strict'; rclient = inClient; }, routes : function(app) { // ### VARIABLES #################################################### var bodyParser, http, morgan, redis, rclient, app; // ### DEPENDENCIES ################################################# bodyParser = require('body-parser'); http = require('http'); morgan = require('morgan'); redis = require('redis'); app = express(); // ### CONFIGURATION ################################################ app.use(morgan('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); // ### ROUTES ####################################################### app.get('/users/:username', function (req, res) { /* Access database via connection in main module to retrieve user data */ }); } }; 

非常感谢您的帮助。

       

网上收集的解决方案 "Node.js,Express,Redis – 来自不同模块的路由不能被调用"

所以基本上经过了很多迷失的神经之后,我偶然发现了这颗gem 。 我是这样实现的,现在我有:

main.js

 "use strict"; var express = require('express'), bodyParser = require('body-parser'), app = express(), port = process.env.port || 3000, account_routing = require('./modules/account_routing')(app); app.listen(port, function () { console.log('Server available at port ' + port); }); 

redis_db.js

 var redis = require('redis'), rclient = redis.createClient(); rclient.on('connect', function (err, response) { 'use strict'; console.log("Connected to database"); }); module.exports = rclient; 

和account_routing.js

 'use strict'; module.exports = function (app) { var bodyParser = require('body-parser'), http = require('http'), morgan = require('morgan'), rclient = require('./redis_db'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(morgan('dev')); /* Routes */ 

这样,有一个连接build立到redis数据库,也是现在路线正常工作。 我希望这些信息能帮助别人。