You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript编译报错:EventEmitter类型未识别问题求助

TypeScript 5.5.x下Mongoose Connection、Discord.js Collector无法识别EventEmitter方法的问题解决

问题描述

使用TypeScript开发Discord机器人时,升级TS版本到5.5.3(此前为5.3.3)后出现类型编译错误:discord.js的client对象可正常识别EventEmitter相关方法,但mongoose的connection、discord.js的InteractionCollector均无法通过编译,报错提示on、emit等属性不存在于对应类型上。将TS版本降级至5.4.x后编译恢复正常。

具体报错信息

Property 'on' does not exist on type 'Connection'. Did you mean to access the static member 'Connection.on' instead?

22     connection.on(event, callback);
                  ~~
error TS2339: Property 'emit' does not exist on type 'InteractionCollector<ButtonInteraction<CacheType>>'.

38                     end(interaction, orderlist, () => collector.emit('end'));
                                                                   ~~~~
Property 'emit' does not exist on type 'InteractionCollector<StringSelectMenuInteraction<CacheType> | UserSelectMenuInteraction<CacheType> | RoleSelectMenuInteraction<CacheType> | MentionableSelectMenuInteraction<...> | ChannelSelectMenuInteraction<...> | ButtonInteraction<...>>'.

153                             collector.emit('end');
                                          ~~~~

已尝试的无效操作

  • 更新所有依赖包
  • 单独安装@types/node
  • 彻底删除并重新安装node_modules
  • 更换MacBook设备测试

问题根源与解决方案

该问题源于TypeScript 5.5.x对EventEmitter混合类型(mixin)的类型检查逻辑变更——新版本对类型推断的严格性提升,导致discord.js v14、mongoose v8等库的旧类型定义无法被正确识别。

临时解决办法(已验证有效)

直接将TypeScript版本降级到5.4.x系列:

npm install typescript@~5.4.0 --save-dev

长期适配方案

  1. 等待库类型定义更新:关注discord.js和mongoose的官方迭代,待其完成TS 5.5适配后再升级TS版本。
  2. 手动类型断言:若需保留TS 5.5版本,可通过类型断言强制指定对象为EventEmitter:
    • 针对mongoose connection:
      import { EventEmitter } from 'node:events';
      (connection as EventEmitter).on(event, callback);
      
    • 针对discord.js collector:
      import { EventEmitter } from 'node:events';
      (collector as EventEmitter).emit('end');
      
  3. 检查TS配置:确保tsconfig.json中包含Node类型支持,且模块解析方式正确:
    {
      "compilerOptions": {
        "types": ["node"],
        "moduleResolution": "Node16",
        // 其他配置项...
      }
    }
    

当前环境信息

  • Node版本:v20.11.0
  • 依赖版本列表:
    @discordjs/builders@1.8.2
    @discordjs/voice@0.16.1
    @types/node@20.14.10
    chalk@4.1.2
    discord.js@14.15.3
    ffmpeg-static@5.2.0
    get-root-path@2.0.2
    libsodium-wrappers@0.7.13
    mongoose@8.4.5
    typescript@5.5.3 (原版本5.3.3)
    

内容的提问来源于stack exchange,提问作者user21848296

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:24:52