用户登录

模块跟模块之间可能会出现循环依赖的问题,就是在模块 A 里面导入了模块 B,在模块 B 里面也导入了模块 A。解决这种循环依赖的问题可以使用 Nest 提供的一个帮手方法,叫 forwardRef。

在我们这个项目里面,AuthModule 模块导入了 UserModule 模块,因为在 AuthModule 模块里面可能需要用到 UserModule 模块里提供的东西。

假设由于某种原因,在 UserModule 模块里也需要用到 AuthModule 模块提供的功能。这就需要在 UserModule 模块里要导入 AuthModule 模块,打开 UserModule 模块,在它的 imports 里面,添加一个 AuthModule 。

回到运行项目开发服务的终端,你会发现,这里报了一个错误,提示 Nest cannot create the module instance,Nest 不能创建模块实例。Often this is because of a circular dependency between modules。 很多时候这是因为模块之间的循环依赖问题。Use forwardRef to avoid it 。使用 forwardRef 可以解决这个问题。

下面我们就用一下 forwardRef 解决这个循环依赖的问题。

先打开 AuthModule 模块,在导入 UserModule 的时候,可以用一下 forwardRef 这个帮手方法,它接收一个函数参数,这个函数要返回一个类型,这里就是 UserModule 。

再打开 UserModule 模块,用同样的方法再处理一下,用一下 forwardRef 这个函数,提供一个函数参数,这个函数返回的是个类型,类型是 AuthModule 。

保存一下文件,再回到终端观察一下,现在就不会再提示无法创建模块实例的错误了。

循环依赖:使用 forwardRef 解决模块的彼此依赖问题《 企业级应用架构:模块 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点