Replies: 1 comment 3 replies
-
循环的地方用动态 API 获取就好。 |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Describe the problem(描述问题)
在 sevice1 和 service2 互相引用的情况下,会发生报错:
两个互相引用的 Service 写法如下:
这里是编译后的代码,set metadata 执行时
user_service_1.UserService
的值是 undefined:因为
emitDecoratorMetadata
编译后的 set metadata 是立即执行的,在两个模块发生循环引用时,立即执行的代码拿到的值就是undefied,所以 set metadata 也是 undefined,导致无法正确读取到依赖注入的对象。所以需要一个像Nestjs 中的
@Inject(forwardRef(()=>UserService2))
方式来解决循环引用时变量初始化为 undefiend 情况,只解决框架的循环依赖逻辑还不够,有一个相关的 issue #3197Midway Versions(Midway 版本)
✓ @midwayjs/faas-typings(not installed)
✓ @midwayjs/fc-starter(not installed)
✓ @midwayjs/serverless-http-parser(not installed)
✓ @midwayjs/async-hooks-context-manager(not installed)
✓ @midwayjs/axios(not installed)
✓ @midwayjs/bootstrap(3.16.6)
✓ @midwayjs/bull(not installed)
✓ @midwayjs/bull-board(not installed)
✓ @midwayjs/cache-manager(not installed)
✓ @midwayjs/captcha(not installed)
✓ @midwayjs/casbin(not installed)
✓ @midwayjs/casbin-redis-adapter(not installed)
✓ @midwayjs/casbin-typeorm-adapter(not installed)
✓ @midwayjs/code-dye(not installed)
✓ @midwayjs/consul(not installed)
✓ @midwayjs/core(3.16.2)
✓ @midwayjs/cos(not installed)
✓ @midwayjs/cron(not installed)
✓ @midwayjs/cross-domain(not installed)
✓ @midwayjs/decorator(not installed)
✓ @midwayjs/etcd(not installed)
✓ @midwayjs/express-session(not installed)
✓ @midwayjs/faas(not installed)
✓ @midwayjs/grpc(not installed)
✓ @midwayjs/http-proxy(not installed)
✓ @midwayjs/i18n(not installed)
✓ @midwayjs/info(3.16.8)
✓ @midwayjs/jwt(not installed)
✓ @midwayjs/kafka(not installed)
✓ @midwayjs/leoric(not installed)
✓ @midwayjs/mikro(not installed)
✓ @midwayjs/mock(3.16.5)
✓ @midwayjs/mongoose(not installed)
✓ @midwayjs/mqtt(not installed)
✓ @midwayjs/oss(not installed)
✓ @midwayjs/otel(not installed)
✓ @midwayjs/passport(not installed)
✓ @midwayjs/process-agent(not installed)
✓ @midwayjs/prometheus(not installed)
✓ @midwayjs/prometheus-socket-io(not installed)
✓ @midwayjs/rabbitmq(not installed)
✓ @midwayjs/redis(not installed)
✓ @midwayjs/security(not installed)
✓ @midwayjs/sequelize(not installed)
✓ @midwayjs/session(not installed)
✓ @midwayjs/socketio(not installed)
✓ @midwayjs/static-file(not installed)
✓ @midwayjs/swagger(not installed)
✓ @midwayjs/tablestore(not installed)
✓ @midwayjs/tags(not installed)
✓ @midwayjs/tenant(not installed)
✓ @midwayjs/typegoose(not installed)
✓ @midwayjs/typeorm(not installed)
✓ @midwayjs/upload(not installed)
✓ @midwayjs/validate(3.16.8)
✓ @midwayjs/version(not installed)
✓ @midwayjs/view(not installed)
✓ @midwayjs/view-ejs(not installed)
✓ @midwayjs/view-nunjucks(not installed)
✓ @midwayjs/web(not installed)
✓ @midwayjs/express(not installed)
✓ @midwayjs/koa(3.16.8)
✓ @midwayjs/ws(not installed)
Beta Was this translation helpful? Give feedback.
All reactions