更新了 Nest 框架以后,重新运行一下我们的项目,npm run start:dev 。 你会发现,启动的时候遇到了两个错误。一个是关于 AuthGuard 的 defaultStrategy 的错误。还有一个是关于在 PostModule 里用的 AccessGuard 依赖的问题。
回到项目,先打开 post.controller 这个文件,在这个控制器里,用到了 AuthGuard ,使用它的时候需要配置一下默认的验证用户身份的策略。 这里我们之前没有设置使用的策略,是因为,在 AuthModule 这个模块里,已经配置了这个默认的策略。
在 PostController 这个控制器所属的 PostModule 模块里面,我们已经导入了 AuthModule 模块。不过现在的问题是,在 AuthModule 这个模块里,并没有导出这个 PassportModule 模块。
添加一个 exports,要导出 PassportModule,这样在 PostModule 模块里,导入了 AuthModule 模块,就不需要配置默认的身份验证策略了。
回到终端,你会发现,之前显示的那个关于 defaultStrategy 的错误就不见了。
AccessGuard
下面再解决一下这个 AccessGuard 依赖的问题。
先打开 AccessGuard 这个守卫,这个守卫有个依赖是 UserService。
在应用的 PostController 这个控制器里用了这个守卫,然后打开这个控制器所属的模块,PostModule 模块,在这个模块里,要导入它的 PostController 里用的那个 AccessGuard 里依赖的 UserService。这个 UserService 属于 UserModule 模块,在这个 UserModule 模块里,已经导出了这个 UserService。
所以在 PostModule 这个模块里面,就可以直接导入一个 UserModule 模块。
这样就解决了在 PostController 里用的这个 AccessGuard 守卫的依赖问题。