loopback-connector-redis
loopback-connector-redis copied to clipboard
strong-globalize can't process error object
Bug or feature request
- [x] Bug
- [ ] Feature request
Description of feature (or steps to reproduce if bug)
- Create a LB app
- Add redis datasource following steps outlined in https://loopback.io/doc/en/lb2/Redis-connector.html
- Change the port to something that is not right for the datasource
Expected result
graceful error like how loopback-connector-mysql
connector does it:
| => node .
Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer
Connection fails: Error: connect ECONNREFUSED 0.0.0.0:3307
It will be retried for the next request.
events.js:141
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 0.0.0.0:3307
at Object.exports._errnoException (util.js:907:11)
at exports._exceptionWithHostPort (util.js:930:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1078:14)
--------------------
Actual result (if bug)
=> node .
Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer
/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:740
matched = (name.indexOf(header) === 0);
^
TypeError: name.indexOf is not a function
at /Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:740:23
at Array.forEach (native)
at headerIncluded (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:738:20)
at Object.hashKeys (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:109:12)
at formatMessage (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:96:14)
at packMessage (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:201:17)
at Object.rfc5424 (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:224:10)
at StrongGlobalize.log (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/index.js:185:20)
at RedisClient.<anonymous> (/Users/badmike/mysql65repo/redis38/node_modules/loopback-connector-redis/lib/redis.js:56:7)
at emitOne (events.js:77:13)
at RedisClient.emit (events.js:169:7)
at RedisClient.on_error (/Users/badmike/mysql65repo/redis38/node_modules/redis/index.js:196:10)
at Socket.<anonymous> (/Users/badmike/mysql65repo/redis38/node_modules/redis/index.js:106:14)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at emitErrorNT (net.js:1269:8)
Additional information (Node.js version, LoopBack version, etc)
| => lb --version
2.2.0 ([email protected] [email protected])
___________________ | ~/mysql65repo/redis38 @ biniams-mbp (badmike)
| => node -v
v4.8.0
___________________ | ~/mysql65repo/redis38 @ biniams-mbp (badmike)
| => npm -v
3.10.10
The issue happens because https://github.com/strongloop/strong-globalize/blob/master/lib/helper.js#L730-#L735 expects name
to be a string, but our downstream dep node_redis
sends an error object along https://github.com/NodeRedis/node_redis/blob/v0.12.1/index.js#L196 (btw we should look into updating that dep because it is currently on 2.7.1
).