该消息意味着,Nest 现在不知道如何解析NewUserService
. 我认为这类似于MollieService
?
您需要添加MollieService
到Provider
您的NewUserModule
:
@Module({
imports: [...],
controllers: [...],
providers: [
...otherProviders,
MollieService
]
})
export class NewUserModule {}
或者您可以创建一个单独的MollieModule
并将其导入NewUserModule
:
@Module({
providers: [ MollieService ],
exports: [ MollieService ] // export MollieService, so that other modules can use it
})
export class MollieModule {}
@Module({
imports: [MollieModule],
controllers: [...],
providers: [...] // no need to provide MollieService here, because it's imported from MollieModule
})
export class NewUserModule {}
当然,您还必须MollieService
使用他们的 SDK 来实现。
建议阅读有关模块的文档。它们乍一看有点难以理解,但是一个强大的概念!
编辑:
我建议将 MollySDK 包装在服务中。这样,您就不会在应用程序的各个位置处理 molly,并防止将其 api 和类型泄漏到您的服务中。
@Injectable()
export class MollyService {
private readonly mollyClient: WhateverType;
constructor() {
this.mollyClient = createMollieClient({ apiKey: 'test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM' });
}
createPayment() {
this.mollieClient.payments.create({...});
}
}
可以照常注入此服务。
但是,如果您真的想直接使用 molly-client,则必须使用自定义提供程序
@Module({
providers: [{
provides: 'MOLLY_CLIENT',
useFactory: () => createMollieClient({ apiKey: 'test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM' }) // you could also use useValue instead of useFactory
}],
exports: [ 'MOLLY_CLIENT' ]
})
export class MollieModule {}
然后像这样注入它NewUsersService
:
constructor(@Inject('MOLLY_CLIENT')private readonly mollyClient: WhateverType) {}