web-dev-qa-db-fra.com

Angular 7 & Stripe Error ts2304: impossible de trouver le nom 'Stripe'

J'ai installé @types/stripe-v3 et le fichier JavaScript de Stripe inclus dans une balise de script dans index.html. Soi-disant le Angular doit inclure tous les fichiers automatiquement à partir des modules de nœud @Types. Lecture sur Internet et regarder @types/stripe-v3/index.d.ts Il devrait y avoir une bande variée déclarée globalement si le fichier est inclus par le compilateur. De index.d.ts

declare var Stripe: stripe.StripeStatic;

Dans mon fichier de service, j'ai le code suivant:

import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';

@Injectable({
  providedIn: 'root'
})
export class BetalingService {
  stripe = Stripe(environment.stripeKey);

  constructor() { }

}

Entraînant l'erreur suivante:

error TS2304: Cannot find name 'Stripe'.
10
Robin De Schepper

Les types d'importations angulaires basés sur des valeurs de compilerOptions.types et compilerOptions.typeRoots Dans le fichier de configuration dossier. TS CompilerOptions Docs Référence

Par défaut Angular projets créés à l'aide de angular CLI aura deux fichiers de configuration dossiers.

  1. tsconfig.json à la racine du projet
  2. tsconfig.app.json dans /src répertoire

Si les deux types et typeRoots sont indéfinis angular Iportera toutes les dactylographies de node_modules/@types/*.

Mais si quelqu'un d'entre eux a une valeur, seuls les types spécifiés ou les types de l'emplacement spécifié seront importés. Par exemple: types: ['stripe-v3'] or typeRoots: ['/someDir']. Donc, tous les autres types installés dans node_modules/@types/* ne sera pas importé.

Si une matrice vide est définie, aucun type ne sera automatiquement importé de node_modules/@types. types: [] or typeRoots: [].

Par défaut compilerOptions.types dans tsconfig.app.json aura un tableau vide comme valeur. C'est la raison pour laquelle angular== ne reçoit pas les dactylographies installées de node_modules/@types/* automatiquement.

Pour résoudre ce problème: npm install @types/stripe-v3 les typages et en tsconfig.app.json

  1. Soit ajouter stripe-v3 au types.
...
"compilerOptions": {
   ...
  "types": ['stripe-v3']
}
  1. Ou supprimer des types de compiléroptions

Si vous ajoutez, vous devrez ajouter toutes les options futures à ce tableau.

Au lieu de cela, si vous supprimez types de compilerOptions angular Iportera automatiquement toutes les options futures.

Assurez-vous également de vérifier types et typeRoots in tsconfig.js aussi. typeRoots aura des chemins relatifs en tant que tableau et la même logique s'applique également ici.

6
Krishna Pravin