首页 > 解决方案 > 错误:Nest 无法解析 AwsSnsService (?) 的依赖项

问题描述

我正在尝试将服务从一个模块注入另一个模块。我不断得到

Error: Nest can't resolve dependencies of the AwsSnsService (?). Please make sure that the argument function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n } at index [0] is available in the AwsModule context.

下面是代码

aws-sns.service.ts

@Injectable()
export class AwsSnsService {
  constructor(private readonly awsSNS: AWS.SNS) {}
}

aws.module.ts

import { Module } from '@nestjs/common';
import { AwsSnsService } from './aws-sns.service';

@Module({
  providers: [AwsSnsService],
  exports: [AwsSnsService],
})
export class AwsModule {}

我想在我的用户模块中使用 AwsSnsService。我正在按照以下方式进行操作

@Module({
  imports: [
    SomeOtherModule,
    AwsModule,
  ],
  providers: [UserService, UserDevicePushTokensService],
  exports: [UserService, UserDevicePushTokensService],
})
export class UserModule {}

@Injectable()
export class UserDevicePushTokensService {
  constructor(private readonly awsSnsService: AwsSnsService) {}
}

在我看来,这些点以正确的方式连接起来。我仍然没有弄清楚。

标签: javascriptnode.jstypescriptdependency-injectionnestjs

解决方案


您必须在 AwsSnsService 中解决 AWS.SNS 的依赖关系

以我的 s3 为例,SNS 和任何服务都一样:

s3.provider.ts

export const s3Providers: Provider = {
  provide: S3_PROVIDER_KEY,
  useFactory: async (): Promise<S3> => {
    return new S3({
      accessKeyId: "Key",
      secretAccessKey: "AccessKey",
    });
  },
};

s3.service.ts

@Injectable()
export class S3Service {
  constructor(
     @Inject(S3_PROVIDER_KEY)
     private readonly s3: S3) {}
}

你可以在这里阅读更多

Nestjs 自定义提供程序


推荐阅读