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);
