【发布时间】:2022-01-08 22:23:38
【问题描述】:
我有一个 Nest 应用程序,我在其中使用(除了其他东西)Fastify、MikroORM 和 nest-mqtt(实际上是从 fork 使用它,它为 Nest 8 修复了它)。
现在,问题在于同时使用 MikroORM 和 nest-mqtt:当两者都导入一个模块(MikroOrmModule.forRoot() 和 MqttModule.forRoot())时,会引发以下错误:
TypeError: Cannot set property length of #<Map> which has only a getter
at _clone (/home/ts/mikro-orm-nest-mqtt/node_modules/clone/clone.js:162:16)
at _clone (/home/ts/mikro-orm-nest-mqtt/node_modules/clone/clone.js:162:18)
at clone (/home/ts/mikro-orm-nest-mqtt/node_modules/clone/clone.js:202:10)
at Function.copy (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/utils/Utils.js:237:36)
at MetadataDiscovery.discoverDirectories (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/metadata/MetadataDiscovery.js:137:55)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at MetadataDiscovery.findEntities (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/metadata/MetadataDiscovery.js:106:9)
at MetadataDiscovery.discover (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/metadata/MetadataDiscovery.js:53:9)
at MikroORM.discoverEntities (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/MikroORM.js:87:25)
at Function.init (/home/ts/mikro-orm-nest-mqtt/node_modules/@mikro-orm/core/dist/MikroORM.js:42:9)
起初,我认为这是clone 中的错误(请参阅this issue),但是,当仅将其中一个包(MikroORM 或nest-mqtt)导入模块时,它不会失败。
我怀疑这两个包以某种方式相互交互/冲突,但是,我迷路了。
Here你可以找到最小的复制品。用npm v8.1.2 和node v16.13.1 和node v17.2.0 测试。另请注意,MQTT 是否实际运行并不重要。还可以根据需要更改 src/mikro-orm.config.ts 中的 MikroORM 配置。
另请参阅 MikroORM 的 this discussion。
【问题讨论】:
标签: typescript nestjs mikro-orm