如何解决nest.js中的DI问题?
我想了解如何通过DI在nestjs中导入第三方库。 所以,我有一个类AuthService
:
export class AuthService { constructor( @Inject(constants.JWT) private jsonWebToken: any, ){} .... }
智威汤逊提供商:
import * as jwt from 'jsonwebtoken'; import {Module} from '@nestjs/common'; import constants from '../../../constants'; const jwtProvider = { provide: constants.JWT, useValue: jwt, }; @Module({ components: [jwtProvider], }) export class JWTProvider {}
库模块:
import { Module } from '@nestjs/common'; import {BcryptProvider} from './bcrypt/bcrypt.provider'; import {JWTProvider} from './jsonwebtoken/jwt.provider'; @Module({ components: [ BcryptProvider, JWTProvider, ], controllers: [], exports: [ BcryptProvider, JWTProvider, ], }) export class LibrariesModule{ }
我得到这个错误:
Error: Nest can't resolve dependencies of the AuthService (?). Please verify whether [0] argument is available in the current context. at Injector.<anonymous> (D:\Learning\nest\project\node_modules\@nestjs\core\injector\injector.js:156:23) at Generator.next (<anonymous>) at fulfilled (D:\Learning\nest\project\node_modules\@nestjs\core\injector\injector.js:4:58) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7)
另外,我想听听有关在jsonWebToken
variables中不使用type的build议。
魔鬼在细节中。 你可以将其他模块“导入”AuthModule,如下所示:
@Module({ modules: [LibrariesModule], // <= added this line components: [AuthService, JwtStrategy], controllers: [], }) export class AuthModule { }
来源: 这里
第二个问题仍然是打开的。