egg-session-redis 的 redis.set 失败

Created on 31 May 2017  ·  3Comments  ·  Source: eggjs/egg

  • Node Version: 8.0.0
  • Egg Version: 1.4.0
  • Plugin Name: egg-session-redis, egg-redis
  • Plugin Version: egg-session-redis 1.0.0, egg-redis 1.0.1
  • Platform: Darwin
  • Mini Showcase Repository:


配置

config.redis = {
    client: {
      host: '127.0.0.1',
      port: 6379,
      password: '',
      db: '0',
    },
  };
  config.sessionRedis = {
    name: 'session',
  };

egg-session 本身能用,redis-server 启动没有问题,用其他客户端可以连得上。
egg-redis 在 egg 启动没有报错。
在执行了 ctx.session 操作之后出错。

2017-06-01 03:55:40,839 ERROR 44683 [-/::1/-/69ms POST /api/user/login] nodejs.TypeError: redis.set is not a function
    at Object.set (/Users/azard/appetizerio/userdb/node_modules/egg-session-redis/app.js:23:19)
    at set.next (<anonymous>)
    at onFulfilled (/Users/azard/appetizerio/userdb/node_modules/co/index.js:65:19)
    at /Users/azard/appetizerio/userdb/node_modules/co/index.js:54:5
    at Promise (<anonymous>)
    at Object.co (/Users/azard/appetizerio/userdb/node_modules/co/index.js:50:10)
    at Object.toPromise (/Users/azard/appetizerio/userdb/node_modules/co/index.js:118:63)
    at next (/Users/azard/appetizerio/userdb/node_modules/co/index.js:99:29)
    at onFulfilled (/Users/azard/appetizerio/userdb/node_modules/co/index.js:69:7)
    at /Users/azard/appetizerio/userdb/node_modules/co/index.js:54:5
    at Promise (<anonymous>)
    at Object.co (/Users/azard/appetizerio/userdb/node_modules/co/index.js:50:10)
    at Object.toPromise (/Users/azard/appetizerio/userdb/node_modules/co/index.js:118:63)
    at next (/Users/azard/appetizerio/userdb/node_modules/co/index.js:99:29)
    at onFulfilled (/Users/azard/appetizerio/userdb/node_modules/co/index.js:69:7)
    at /Users/azard/appetizerio/userdb/node_modules/co/index.js:54:5
    at Promise (<anonymous>)
    at Object.co (/Users/azard/appetizerio/userdb/node_modules/co/index.js:50:10)
    at Object.toPromise (/Users/azard/appetizerio/userdb/node_modules/co/index.js:118:63)
    at next (/Users/azard/appetizerio/userdb/node_modules/co/index.js:99:29)
    at onFulfilled (/Users/azard/appetizerio/userdb/node_modules/co/index.js:69:7)
    at <anonymous>

在 egg-session-redis/app.js:23 处打 console.log(redis) 显示

Promise {
  _bitField: 33554432,
  _fulfillmentHandler0: undefined,
  _rejectionHandler0: null,
  _promise0: undefined,
  _receiver0: undefined,
  _trace:
   { Error
       at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (/Users/azard/appetizerio/userdb/node_module
s/ioredis/node_modules/bluebird/js/release/debuggability.js:397:19)
       at Promise._resolveFromExecutor (/Users/azard/appetizerio/userdb/node_modules/ioredis/node_modules/bluebird/js/r
elease/promise.js:480:10)
       at new Promise (/Users/azard/appetizerio/userdb/node_modules/ioredis/node_modules/bluebird/js/release/promise.js
:79:10)
       at Command.initPromise (/Users/azard/appetizerio/userdb/node_modules/ioredis/lib/command.js:63:18)
       at new Command (/Users/azard/appetizerio/userdb/node_modules/ioredis/lib/command.js:51:8)
       at Redis.get (/Users/azard/appetizerio/userdb/node_modules/ioredis/lib/commander.js:131:29)
       at module.exports.app (/Users/azard/appetizerio/userdb/node_modules/egg-session-redis/app.js:9:34)
       at AppWorkerLoader.loadFile (/Users/azard/appetizerio/userdb/node_modules/egg-core/lib/loader/egg_loader.js:269:
30)
       at getLoadUnits.forEach.unit (/Users/azard/appetizerio/userdb/node_modules/egg-core/lib/loader/mixin/custom.js:2
5:29)
       at Array.forEach (native)
       at AppWorkerLoader.loadCustomApp (/Users/azard/appetizerio/userdb/node_modules/egg-core/lib/loader/mixin/custom.
js:25:8)
       at AppWorkerLoader.load (/Users/azard/appetizerio/userdb/node_modules/egg/lib/loader/app_worker_loader.js:33:10)
       at new Application (/Users/azard/appetizerio/userdb/node_modules/egg/lib/application.js:36:19)
       at Object.<anonymous> (/Users/azard/appetizerio/userdb/node_modules/egg-cluster/lib/app_worker.js:13:13)
       at Module._compile (module.js:569:30)
       at Object.Module._extensions..js (module.js:580:10)
       at Module.load (module.js:503:32)
       at tryModuleLoad (module.js:466:12)
       at Function.Module._load (module.js:458:3)
       at Function.Module.runMain (module.js:605:10)
       at startup (bootstrap_node.js:158:16)
       at bootstrap_node.js:575:3
     _parent: undefined,
     _promisesCreated: 0,
     _length: 1,
     _promiseCreated: null } }

Most helpful comment

遇到同样的问题 解决了吗?

All 3 comments

将下面这个配置去掉就好了,你只有一个 redis 实例,不需要指定实例名。

  config.sessionRedis = {
    name: 'session',
  };

遇到同样的问题 解决了吗?

@max-level 参考 dead-horse 的回答

Was this page helpful?
0 / 5 - 0 ratings