2013-03-20 34 views
6

嗨,我正在使用compoundjs和connect-memcached。下面是我的envirionment.js文件中的內容:節點js,使用connect-memcached時無響應

module.exports = function (compound) { 

var express = require('express'); 
var MemcachedStore = require('connect-memcached')(express); 
var app = compound.app; 

require('./mongoose').init(compound); 
app.configure(function(){ 
    app.use(compound.assetsCompiler.init()); 
    app.use(express.static(app.root + '/public', { maxAge: 86400000 })); 
    app.set('view engine', 'ejs'); 
    app.set('view options', { complexNames: true }); 
    app.set('jsDirectory', '/javascripts/'); 
    app.set('cssDirectory', '/stylesheets/'); 
    app.set('cssEngine', 'stylus'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.favicon()); 
    app.use(express.logger()); 
    app.use(express.cookieParser()); 
    app.use(express.session({secret: 'AuthenticationSecret', store: new   MemcachedStore}));   
    app.use(app.router); 
}); }; 

當我啓動服務器,通過給下面的命令:

NODE_ENV=production node . 

它開始很好,我得到:

MemcachedStore initialized for servers: 127.0.0.1:11211 
AssetsCompiler Precompiling assets: coffee, styl 
Compound server listening on 0.0.0.0:3000 within production environment 

當我通過瀏覽器請求時,我沒有收到任何迴應。

下面是我的routes.js文件內容:

exports.routes = function (map) { 
    map.get('api/yourname','names#index') 
} 

在我的名字控制器:

load('application'); 
action('index', function(req, res) { 
    send({"name": "Senthil"}); 
}); 

PS:如果我評論的代碼使用連接,Memcached和要求通過瀏覽器,我得到迴應。

感謝您的幫助提前。

+0

你可以連接到該memcached地址罰款嗎? 'telnet 127.0.0.1 11211' – Bluu 2013-08-14 22:34:11

回答

0

嘗試增加括號和new MemcacheStore後的配置,使它看起來像這樣:

app.use(express.session({ 
    secret: 'AuthenticationSecret', 
    store: new MemcachedStore({ 
     hosts: [ '127.0.0.1:11212' ] 
    }) 
})); 

(這是假設你的內存緩存服務器位於localhost:11212 - 如果沒有,那麼主機行更改爲服務器主機名或IP)。

0

對於會話,您需要一個密鑰。否則,你會得到這個錯誤。

Error: secret option required for sessions

我假設您沒有看到錯誤,因爲您正在生產環境中運行。添加一個密鑰是這樣的:

app.use(express.session({ 
    store: new MemcachedStore, 
    secret: 'secret_key' 
})); 

既然你正在運行本地主機,你並不需要指定主機或端口。