配置
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 } }
将下面这个配置去掉就好了,你只有一个 redis 实例,不需要指定实例名。
config.sessionRedis = {
name: 'session',
};
遇到同样的问题 解决了吗?
@max-level 参考 dead-horse 的回答
Most helpful comment
遇到同样的问题 解决了吗?