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

Relaterade artiklar