node.js - importera stripe med node js + typescript
Jag behöver importera Stripe till min applikation
Först installerade jag stripe npm-paketet
npm install stripe --save
Stripe-dokumentationen säger att den hemliga nyckeln bör sättas innan du ansluter API:et.
I Node det gillar så här
var stripe = require('stripe')(' your stripe API key ');
Jag behöver konvertera det till TypeScript
Jag försökte följa sättet, men det fungerade inte för mig
import * as stripe from 'stripe';
stripe('sk_test_...')
Om någon kan hjälpa mig att lösa detta problem skulle det vara ett stort stöd för mig att fortsätta mitt projekt utan försening.
Tack
Svar #1
Du kan hänvisa till repot på GitHub: 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();
Svar #2
Från och med stripe 8.0.1 har paketet sina egna typer, så det är inte nödvändigt att installera ytterligare typer. Importera det bara så här:
import Stripe från 'stripe';
Svar #3
Uppdatering: Lösningen nedan är föråldrad och för dem som använder [email eller senare bör svaret från David Dehghan användas.
Som britzkopf sa, stripe tillhandahåller inte sina egna definitioner än (och troligen kommer de aldrig att göra det), men du kan använda typdefinitionerna från @types/stripe.
npm install stripe @types/stripe
Och importera och skapa sedan Stripe-klassen enligt följande.
import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');
Om du av någon anledning vill ha mer detaljerade importeringar kan du istället använda detta (något hackiga) tillvägagångssätt.
import { resources } from 'stripe';
const stripeData = require('stripe')('xxx_xxx_xxx');
const customers = new resources.Customers(stripeData, null);
Svar #4
Jag hade samma problem och lösningen som gavs fungerade inte för mig:
import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');
Med den här metoden fick jag detta fel
[ts] Kan inte använda 'new' med ett uttryck vars typ saknar en anrops- eller konstruktionssignatur. stripe.ts(1, 1): Typen härstammar från denna import. Ett namnrymdsstil-import kan inte anropas eller konstrueras och kommer att orsaka ett fel vid körning. Överväg att använda en standardimport eller import require här istället. (alias) klass Stripe (alias) namnrymd Stripe import Stripe
Jag fick det att fungera genom att använda "allowSyntheticDefaultImports": true i tsconfig.json. Med detta kompilationsalternativ är följande giltigt i TypeScript:
import Stripe from "stripe";
const secret = process.env.STRIPE_SECRET!;
export const stripe = new Stripe(secret);
