socket.io-redis-adapter icon indicating copy to clipboard operation
socket.io-redis-adapter copied to clipboard

TypeError with @socket.io/redis-adapter on Node.js v18.15.0

Open govind-amt opened this issue 1 year ago • 5 comments

I'm encountering an unexpected error when utilizing the socket.io/redis-adapter in my application. Below are the error logs for your reference:

Environment:

  • Node.js Version: 18.15.0
  • Redis Instance Version: redis:7.0.11-alpine
  • Docker container

Dependencies:

  • "redis": "4"
  • "@socket.io/redis-adapter": "^8.2.1"
  • "socket.io": "4.5.1"
  • "socket.io-client": "4.5.1"

Error Log:

Node.js v18.15.0
/app/node_modules/@[socket.io/redis-adapter/dist/sharded-adapter.js:27](http://socket.io/redis-adapter/dist/sharded-adapter.js:27)
class ShardedRedisAdapter extends socket_io_adapter_1.ClusterAdapter {
                                                      ^

TypeError: Class extends value undefined is not a constructor or null
    at Object.<anonymous> (/app/node_modules/@[socket.io/redis-adapter/dist/sharded-adapter.js:27:55](http://socket.io/redis-adapter/dist/sharded-adapter.js:27:55))
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at Object.<anonymous> (/app/node_modules/@[socket.io/redis-adapter/dist/index.js:704:25](http://socket.io/redis-adapter/dist/index.js:704:25))
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at Object.<anonymous> (/app/main.js:12473:18)
    at __webpack_require__ (/app/main.js:12549:42)

Node.js v18.15.0

I would appreciate any assistance to resolve this issue.

govind-amt avatar Mar 20 '24 04:03 govind-amt

It looks like the following change silently changed the minimum version of socket.io-adapter that's required:

https://github.com/socketio/socket.io-redis-adapter/commit/7fb6b90baf721c0b89ece93265a3cbe7ca0a7fd0

Some package managers will automatically install required peer dependencies. Mine did not; I ran yarn add socket.io-adapter && yarn dedupe && yarn remove socket.io-adapter, and now things work correctly.

nwalters512 avatar Mar 21 '24 00:03 nwalters512

@nwalters512 arf, I did not test with yarn, sorry for that.

@govind-amt which version of socket.io-parser package (imported by both socket.io and @socket.io/redis-adapter) is installed?

darrachequesne avatar Mar 22 '24 09:03 darrachequesne

@nwalters512 arf, I did not test with yarn, sorry for that.

@govind-amt which version of socket.io-parser package (imported by both socket.io and @socket.io/redis-adapter) is installed?

I get same error, I used [email protected] and @socket.io/[email protected]

vvtri avatar Mar 26 '24 07:03 vvtri

@vvtri that's weird, you should have [email protected]. Could you please try running npm update socket.io-adapter to see if it fixes your issue?

darrachequesne avatar Mar 27 '24 09:03 darrachequesne

Yeah same issue here, it installs [email protected]. Even pinning it to 2.5.4 in package.json doesn't help Setting

  "resolutions": {
    "socket.io-adapter": "2.5.4"
  }

in package.json works and fixes the issue

xtrinch avatar Apr 03 '24 12:04 xtrinch