2016-06-24 3 views
2

という名前で現在分散システムを開発していて、昨夜私のコードをクラッシュさせることはできません。私のサーバーアプリケーションには複数のモジュールがあり、それぞれが自分のredis dbとの接続を確立しましたが、メインモジュール経由で1つの接続があれば良いでしょう。これは、私は昨夜実装しようとしましたが、私はかなり正確に問題が何であるかを把握することはできません。私はこの分野にはまだまだ新しく、SitePoint、Medium、その他のブログのようなページで既に検索していますが、ここで私の問題や派生バージョンをチェックしましたが、これを解決するのに役立つものは何も見つかりませんでした。Node.js、Express、Redis - 別のモジュールからのルートを

UPDATE 2016年6月24日13時18分
私は自分のコードからapp.use() -statementを削除し、現在のサーバーは、最大発射されます。進歩:) しかし、私がルートをテストしようとすると、私が得る唯一の応答はCannot <METHOD> <ROUTE>です。
this question hereを見ると、私はちょうどコードから削除したapp.use()を利用する答えを私に提供します。私は行方不明のものがありますか?

更新日2016/6/24 14:05
app.use('/', account_routing.routes);というステートメントを実装しましたが、動作しませんが、正しい方法ですか?私はリクエストを送ることができますが、今は何も答えはありません。

私は私のサーバー・アプリケーションのコードを提供しています:

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 */ 
     }); 
    } 
}; 

account_routing.js

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

は助けを事前にありがとうございました。

+0

おそらくあなたのエラーは 'app.use( '/'、account_routing);' – Subburaj

+0

'.use'は関数を渡す必要がありますがaccount_routingはオブジェクトをエクスポートします。ここの例を参照してくださいhttp://expressjs.com/en/guide/writing-middleware.html – Andrey

答えて

1

基本的には失われた神経のひどい痛みの後、私はつまずいたthis nice gem here

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; 

'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 */ 

この方法をaccount_routing.js:私はそれをまさにこのように実装 、今私が持っています、redisデータベースに確立された単一の接続があり、ルートも動作しています今rly。 この情報が誰かに役立つことを願っています。

関連する問題