您好我正在使用compoundjs和connect-memcached。以下是我的envirionment.js文件中的内容:
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:如果我评论使用connect-memcached的代码并通过浏览器请求,我会收到回复。
提前感谢您的帮助。
答案 0 :(得分:0)
尝试在new MemcacheStore
之后添加括号和配置,使其如下所示:
app.use(express.session({
secret: 'AuthenticationSecret',
store: new MemcachedStore({
hosts: [ '127.0.0.1:11212' ]
})
}));
(假设您的memcache服务器位于localhost:11212 - 如果没有,则将主机行更改为服务器的主机名或IP。)
答案 1 :(得分:0)
对于会话,您需要一个密钥。否则,您将收到此错误。
错误:会话需要
secret
选项
我假设你没有看到错误,因为你在生产环境中运行。像这样添加一个密钥:
app.use(express.session({
store: new MemcachedStore,
secret: 'secret_key'
}));
由于您正在运行localhost,因此无需指定主机或端口。