项目中用到thinkjs,一直用typescript编写代码。最早node用6.x版本都很正常,后来升级到了10.19,之后就一直报这个错误:
因为是底层库的报错,在thinkjs官方qq群问了一圈,也没找到答复,估计大家都是用js,很少有人碰到这个问题。
以前偷懒解决方案是直接把这个index.d.ts改个名字或者删除,就没有报错了,因为我们的代码根本没有涉及到think.cluster,不需要它的代码提示。
今天重新pull了一下项目文件,重新yarn install之后,又报这个错。稍微花时间研究了一下。EventEmitter本来是个类,think.cluster里面继承了这个类。但是在10.19版本的@types/node/events.d.ts的定义里面,把它定义成了一个接口,所以会报这个错。
打开@types/node/events.d.ts这个文件,第59行:
global {
namespace NodeJS {
interface EventEmitter {
...
}
}
}
修改为:
global {
namespace NodeJS {
class EventEmitter {
...
}
}
}
问题解决。