Не удается внедрить клиент Stripe в NestJS (https://www.npmjs.com/package/@golevelup/nestjs-stripe)

Я пытаюсь использовать полосовой пакет GoLevelUp для интеграции полосы с моим проектом NestJs. Я могу импортировать пакет в мой глобальный модуль приложения, но я не могу фактически внедрить работающий клиент в назначенный контроллер.

(https://github.com/golevelup/nestjs/tree/master/packages/stripe ) ( https://www.npmjs.com/package/@golevelup/nestjs-stripe) (https://www.npmjs.com/package/@nestjs/core)

отредактировано.controller.ts:

import { InjectStripeClient } from '@golevelup/nestjs-stripe';
import Stripe from 'stripe';

@Controller('[REDACTED]')
export class MyAwesomeController {
  constructor(
    @InjectStripeClient() stripeClient: Stripe, //this line crashes
    private readonly myService: MyCoolService
  ) { }
}

app.module.ts:

import { StripeModule } from '@golevelup/nestjs-stripe';
import { OtherModules } from 'where/ever';

@Module({
  imports: [
    ModuleA,
    ModuleB,
    ...,

    StripeModule.forRoot(StripeModule,
      {
        apiKey: 'PC_LOAD_KEY',
        webhookConfig: {
          // stripeWebhookSecret: 'PC_LOAD_SECRET'

          //TODO -- same deal w/ config
          stripeWebhookSecret: 'SHHHH',
          
        },
        
      }),


    MoreModulues,
    ...,
  ],
  controllers: [AppController, ControllerB, ControllerC, ...],
  providers: [AppService, ServiceB, ServiceC, ...]
}

Приведенный выше код не может быть построен со следующей ошибкой:

Nest can't resolve dependencies of the [REDACTED]Controller (?, [REDACTED]Service). Please make sure that the argument Symbol(STRIPE_CLIENT_TOKEN) at index [0] is available in the [REDACTED]Module context.

Potential solutions:
- If Symbol(STRIPE_CLIENT_TOKEN) is a provider, is it part of the current [REDACTED]Module?
- If Symbol(STRIPE_CLIENT_TOKEN) is exported from a separate @Module, is that module imported within [REDACTED]Module?
  @Module({
    imports: [ /* the Module containing Symbol(STRIPE_CLIENT_TOKEN) */ ]

Мне нужно иметь возможность фактически создать экземпляр клиента полосы, чтобы я мог совершать вызовы API полосы. Без этого пакет непригоден для использования. Я немного не понимаю, как настроить это, чтобы оно не зависало.

Я попытался найти в пакете golevelup оскорбительный «STRIPE_CLIENT_TOKEN».

Здесь живет: https://github.com/golevelup/nestjs/tree/master/packages/stripe/src/stripe.constants.ts https://github.com/golevelup/nestjs/tree/master/packages/ полоса/src/stripe.decorators.tshttps://github.com/golevelup/nestjs/tree/master/packages/stripe/src/stripe.module.ts

Я также просмотрел официальный пакет полос, чтобы узнать, как настроить отсутствующие токены. На данный момент я в сорняках и мог бы сделать с указателем или рабочим примером. В противном случае я просто реализую это сам, используя примитивы Stripe™.

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что с тем, как написан StripeModule, вам нужно использовать StripeModule.forRoot() в [REDACTED]Module. StripeModule не является глобальным, поэтому он предоставляет полосатый клиент (через его декоратор) только модулю, который настроил и импортировал модуль.

Я попробую. update Это компилируется. Я проверю и отчитаюсь после того, как помою эту чертову посуду.

fizban 16.12.2022 20:43

Другие вопросы по теме