node.js - uvoz stripe koristeći node js + typescript


Trebam uvesti Stripe u svoju aplikaciju

Prvo sam instalirao Stripe npm paket

npm install stripe --save

Dokumentacija Stripe-a kaže da tajni ključ treba postaviti prije povezivanja API-ja.

U Node-u to izgleda ovako

var stripe = require('stripe')(' your stripe API key ');

Trebam to pretvoriti u TypeScript

Pokušao/la sam na sljedeći način, ali mi nije uspjelo

import * as stripe from 'stripe';
stripe('sk_test_...')

ako mi netko može pomoći da riješim ovaj problem, to će mi biti velika pomoć da nastavim svoj projekt bez odgađanja.

Hvala

Odgovor #1

Možete se obratiti repozitoriju na GitHubu: https://github.com/stripe/stripe-node

import Stripe from 'stripe';

const stripe = new Stripe('sk_test_...', {
  apiVersion: '2020-08-27',
});

const createCustomer = async () => {
  const params: Stripe.CustomerCreateParams = {
    description: 'test customer',
  };

  const customer: Stripe.Customer = await stripe.customers.create(params);

  console.log(customer.id);
};
createCustomer();

Odgovor #2

Od verzije stripe 8.0.1 paket ima vlastito tipiziranje, pa nije potrebno instalirati dodatne tipove. Samo ga uvezite na ovaj način:

import Stripe iz 'stripe';

Odgovor #3

Ažuriranje: Rješenje u nastavku je zastarjelo, a za one koji koriste [email ili novije, trebali biste koristiti odgovor Davida Dehghana.

Kao što je Britzkopf rekao, Stripe još ne pruža vlastite definicije (i vjerojatno ih nikad neće pružiti), ali možete koristiti tip definicije iz @types/stripe.

npm install stripe @types/stripe

A zatim uvezite i konstruirajte Stripe klasu na sljedeći način.

import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');

Ako iz nekog razloga želite detaljnije uvoze, možete umjesto toga koristiti ovaj (donekle hakovski) pristup.

import { resources } from 'stripe';
const stripeData = require('stripe')('xxx_xxx_xxx');
const customers = new resources.Customers(stripeData, null);

Odgovor #4

Imao sam isti problem i rješenje koje je ponuđeno nije mi uspjelo:

import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');

Koristeći ovaj pristup, dobio sam ovu grešku

[ts] Ne može se koristiti 'new' s izrazom čiji tip nema pozivnu ili konstrukcijsku potpis. stripe.ts(1, 1): Tip potječe iz ovog importa. Impor u stilu namespacea ne može se pozvati ili konstruirati, i uzrokovat će grešku u izvođenju. Razmislite o korištenju default importa ili import require umjesto toga. (alias) klasa Stripe (alias) namespace Stripe import Stripe

Uspio sam to pokrenuti koristeći "allowSyntheticDefaultImports": true u tsconfig.json. S ovom opcijom kompajliranja, sljedeće je valjano u TypeScriptu:

import Stripe from "stripe";

const secret = process.env.STRIPE_SECRET!;
export const stripe = new Stripe(secret);

Povezani članci