按照nest官方文档,使用nest CLI创建controller service module
$ nest g controller products
$ nest g service products
$ nest g module products
框架会自动生成依赖关系,在app.module.ts中
上图中注释掉掉//controllers, //providers 就是框架自动生成的,带来了很多麻烦。 编译不通过,如下图。
这个依赖注入的问题困扰了几个小时,最终还是踏踏实实一句一句的看官方文档。https://docs.nestjs.com/modules
所以,一个Module就是一块空间,如果希望把自己的Service给其他Module使用,就exports出去。问题是nest为什么要在AppModule中自动生成其他Module的controllers和providers呢???应该是希望这些Modules可以直接相互注入吧,省去其他每个Module的imports,但是文档也没说明白呀!总之注释掉了AppModule中的controllers和providers后编译通过了。
还没有研究清楚,为什么上图的写法,必须匹配下图的写法 ?
如果其他模块如auth,需要使用SystemUserService中的方法,那么在AuthModule中需要引入SystemUserModule。