如何解决nestjs中的DI问题?
Posted
技术标签:
【中文标题】如何解决nestjs中的DI问题?【英文标题】:How to resolve DI issue in nest.js? 【发布时间】:2018-05-24 16:20:51 【问题描述】:我想了解如何通过 DI 在 nestjs 中导入 3rd 方库。所以,我有一堂课AuthService
:
export class AuthService
constructor(
@Inject(constants.JWT) private jsonWebToken: any,
)
....
JWT 提供者:
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
变量中使用类型 any
的建议。
【问题讨论】:
我挖得更深了,根据源代码中的cmets:“组件可以通过构造函数注入依赖项。这些依赖项应该属于同一个模块。”。问题是一样的,但是我如何注入外部组件? 【参考方案1】:魔鬼在细节中。您可以像这样将其他模块“导入”到 AuthModule 中:
@Module(
modules: [LibrariesModule], // <= added this line
components: [AuthService, JwtStrategy],
controllers: [],
)
export class AuthModule
来源:here
第二个问题仍未解决。
【讨论】:
我需要单独提问还是保留这个?以上是关于如何解决nestjs中的DI问题?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决在 NestJs 应用程序中应该是 Injectable 类的未实例化属性?