使用egg-scoket.io报错 Middleware must be composed of functions!
- Dominant language
- TypeScript
- Stars
- 19k
- Forks
- 1.8k
- PR merge metrics
- No merged PRs in 30d
Description
## What happens?
使用egg ^2.29.1+egg-socket.io ^4.1.6的时候,一直报Middleware must be composed of functions! 都是按官网配置的,然后通过报错信息,找到了源码中的io.js,发现了一个有点诡异的问题。这边报错的关键点在于io.js中查找sessionMiddleware这里:
```
const sessionMiddleware = app.middleware.filter(mw => {
return mw._name && mw._name.startsWith('session');
})[0];
```
打印出来是undefined,但是如果把[0]去掉,是可以打印`[AsyncFunction (anonymous)]`的,而且如果把filter()[0]改成find(),也能找到对象。我尝试打印如下代码:
```
let zzz = app.middleware.filter(mw => {
return mw._name && mw._name.startsWith('session');
})
console.log(zzz.length); //2
console.log(zzz[0]); //undefined
console.log(zzz); //[AsyncFunction (anonymous)]
```
实在匪夷所思,可否请有经验的老师给予解释。
Contributor guide
Assessment
This issue has not been assessed yet.