【问题标题】:Node js, no response returned while using connect-memcached节点js,使用connect-memcached时没有返回响应
【发布时间】:2013-03-20 12:14:44
【问题描述】:

您好,我正在使用 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 和通过浏览器请求的代码,我会得到响应。

提前感谢您的帮助。

【问题讨论】:

  • 你可以连接到那个memcached地址吗? telnet 127.0.0.1 11211

标签: node.js session memcached response compoundjs


【解决方案1】:

尝试在new MemcacheStore 之后添加括号和配置,使其看起来像这样:

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

(假设您的内存缓存服务器位于 localhost:11212 - 如果不是,则将 hosts 行更改为您的服务器的主机名或 IP。)

【讨论】:

    【解决方案2】:

    对于会话,您需要一个密钥。否则,您将收到此错误。

    错误:会话需要secret 选项

    我假设您没有看到错误,因为您是在生产环境中运行的。像这样添加一个密钥:

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

    由于您运行的是 localhost,因此无需指定主机或端口。

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2016-12-13
      相关资源
      最近更新 更多