如何解决NestJS应用中MongoDB版本依赖导致的TS类型不兼容问题
NestJS构建时TypeScript类型不兼容问题求助
执行构建命令 npm run build 时,出现如下TypeScript编译错误:
src/shared/infrastructure/event-store/events-bridge.ts:31:5 - error TS2322: 类型 'ChangeStream<any, any>' 不能分配给类型 'ChangeStream<Document, ChangeStreamDocument<Document>>'。 属性 'options' 的类型不兼容。 类型 'import("C:/Users/***/repositories/nestjs-architecture/node_modules/mongoose/node_modules/mongodb/mongodb").ChangeStreamOptions & { writeConcern?: never; }' 不能分配给类型 'import("C:/Users/***/repositories/nestjs-architecture/node_modules/mongodb/mongodb").ChangeStreamOptions & { writeConcern?: never; }'。 类型 'ChangeStreamOptions & { writeConcern?: never; }' 不能分配给类型 'ChangeStreamOptions'。 这些类型的 'session.clientOptions' 属性不兼容。 类型 'MongoOptions' 缺少类型 'MongoOptions' 中的以下属性: keepAlive, keepAliveInitialDelay 31 this.changeStream = this.eventStore ~~~~~~~~~~~~~~~~~ 找到 1 个错误。
已排查出问题根源:TypeORM依赖mongodb 5.x.x版本,而Mongoose依赖mongodb 6.x.x版本,二者的mongodb.d.ts类型声明存在差异。尝试将Mongoose回滚至依赖mongodb 5.x.x的旧版本后,又出现了其他TypeScript编译问题。由于不擅长处理TypeScript类型不兼容问题,特此寻求解决指引。
复现步骤
- 克隆指定仓库
- 执行
npm install - 执行
npm run build - 触发上述TypeScript错误
内容的提问来源于stack exchange,提问作者ebola
相关产品推荐
相关产品推荐

