Sweetalert: Tippfehler TS2403: Nachfolgende Variablendeklarationen müssen denselben Typ haben.

Erstellt am 25. Jan. 2019  ·  22Kommentare  ·  Quelle: t4t5/sweetalert

Auf Angular 7 mit TypeScript 3.2.4 aktualisiert und erhalte jetzt beim Kompilieren Folgendes:

import swal from 'sweetalert';

swal({ ... });

FEHLER in node_modules/sweetalert/typings/sweetalert.d.ts(4,9): Fehler TS2403: Nachfolgende Variablendeklarationen müssen denselben Typ haben. Die Variable 'swal' muss vom Typ 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")' sein, hat hier aber den Typ 'SweetAlert'.

Wenn ich node_modules/sweetalert/typings/sweetalert.d.ts bearbeite von...

import swal, { SweetAlert } from "./core";

declare global {
  const swal: SweetAlert;
  const sweetAlert: SweetAlert;
}

export default swal;
export as namespace swal;

... zu ...

import swal, { SweetAlert } from "./core";

export default swal;
export as namespace swal;

... es beginnt zu arbeiten.

Irgendwelche Ideen?

Hilfreichster Kommentar

Hallo zusammen,

Sparen Sie sich den Aufwand und nutzen Sie sweetalert 2 https://sweetalert2.github.io/

Alle 22 Kommentare

Gleiches Thema, gleiche Situation.

Mir ist jedoch aufgefallen, dass nur das Auskommentieren der Zeile export as namespace swal; auch kompilieren lässt. Ich habe in den TypeScript-Changelogs nach Hinweisen gesucht...

Gleiches Thema, gleiche Situation.

Mir ist jedoch aufgefallen, dass nur das Auskommentieren der Zeile export as namespace swal; auch kompilieren lässt. Ich habe in den TypeScript-Changelogs nach Hinweisen gesucht...

gleicher Fehler
Ich habe diese Lösung verwendet
aber diese Lösung finde ich nicht richtig.

Gleicher Fehler.

Auch gleiches Problem. Aus diesem Grund schlagen CI-Builds fehl.

Ich habe das gleiche Problem, wenn ich unter OpenBSD laufe. Ja, ich kenne kein Mainstream-Betriebssystem, aber die verfügbare Version von TypeScript macht alles mit Sweetalert unbrauchbar :(

Ich habe das gleiche Problem, wenn ich unter OpenBSD laufe. Ja, ich kenne kein Mainstream-Betriebssystem, aber die verfügbare Version von TypeScript macht alles mit Sweetalert unbrauchbar :(

@t4t5 Können Sie sich dieses Problem ansehen?

Erlebe dies auch mit Angular 7

Irgendeine Idee zu einer Problemumgehung außer der manuellen Bearbeitung der Definitionsdatei? Es wird ein bisschen mühsam, sich daran zu erinnern, dies nach jeder Klon- / npm-Installation zu tun.

@bogdan-calapod Folgendes habe ich als Workaround getan, damit unser CI-Build nicht fehlschlägt:

  1. Laden Sie die Sweetalert-minifizierte Skriptdatei hier herunter (klicken Sie mit der rechten Maustaste und speichern Sie den Link als sweetalert.min.js ).
  2. Platzieren Sie sweetalert.min.js in src/assets/scripts in der Angular-Anwendung.
  3. src/assets/scripts/sweetalert.min.js zu scripts Eintrag in angular.json
  4. Fügen Sie in allen Komponenten/Diensten, die Sie Sweetalert verwenden möchten, declare var swal: any; über der Klassendeklaration hinzu.
  5. Sie können Sweetalert überall in der Datei verwenden, indem Sie die globale Variable swal , dh return swal({...})
  6. Sie können jetzt das Sweetalert NPM-Paket entfernen, da Sie eine lokale Skriptdatei verwenden: npm uninstall sweetalert --save

Hallo zusammen,

Sparen Sie sich den Aufwand und nutzen Sie sweetalert 2 https://sweetalert2.github.io/

Irgendwelche Updates zu diesem Problem?

Hallo zusammen,

Sparen Sie sich den Aufwand und nutzen Sie sweetalert 2 https://sweetalert2.github.io/

Diese haben Unterstützung für 3 Tasten oder mehr?

@DVGalarza diese

@alvarofelipe12 Haben Sie in der Datei, in der Sie 'swal' verwenden möchten, declare var swal: any; am Anfang der Datei hinzugefügt (unter Importen)? Wenn ja, überprüfen Sie auch, ob sweetalert.min.js im Abschnitt 'Skripte' von angular.json richtig referenziert ist.

Auf Angular 7 mit TypeScript 3.2.4 aktualisiert und erhalte jetzt beim Kompilieren Folgendes:

import swal from 'sweetalert';

swal({ ... });

FEHLER in node_modules/sweetalert/typings/sweetalert.d.ts(4,9): Fehler TS2403: Nachfolgende Variablendeklarationen müssen denselben Typ haben. Die Variable 'swal' muss vom Typ 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")' sein, hat hier aber den Typ 'SweetAlert'.

Wenn ich node_modules/sweetalert/typings/sweetalert.d.ts bearbeite von...

import swal, { SweetAlert } from "./core";

declare global {
  const swal: SweetAlert;
  const sweetAlert: SweetAlert;
}

export default swal;
export as namespace swal;

... zu ...

import swal, { SweetAlert } from "./core";

export default swal;
export as namespace swal;

... es beginnt zu arbeiten.

Irgendwelche Ideen?

meine Alternative war, const swal in const _swal . umzubenennen

import swal, { SweetAlert } from "./core";

global deklarieren {
const_swal: SweetAlert;
const sweetAlert: SweetAlert;
}

Standard-Swal exportieren;
als Namespace swal exportieren;

hallo!, gleiches problem

Ich habe dies behoben, indem ich die Sweetalert-Typen überschrieben habe. Ich habe eine Datei im src-Verzeichnis namens src/node_modules/sweetalert/index.d.ts hinzugefügt

//this file is needed because the sweetalert typings need to be overwritten because they are broken
//the real fix here is to stop using sweetalert

declare global {
  const _swal: any;
  const sweetAlert: any;
}

export default _swal;
export as namespace swal;

Gelöst durch Änderung dieser Zeile:

import swal from 'sweetalert';

zu:

const swal = require('sweetalert');

oder (mit der Schnittstelle):

import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = require('sweetalert');

Ich habe das gleiche Problem in Angular 10. Ja, das Problem scheint in sweetalert.d.ts da laut meiner IDE ein Fehler aufgetreten ist, daher denke ich nicht, dass es eine schlechte Lösung ist, es zu kommentieren:

image

@drmencos Ist das für Node.js? require funktioniert bei mir in Angular 10 nicht.

In der Datei: node_modules> sweetalert> typings> sweetalert.d.ts
Kommentar: const swal: SweetAlert;

import swal, {SweetAlert} von "./core";

global deklarieren {
// const swal: SweetAlert;
const sweetAlert: SweetAlert;
}

Standard-Swal exportieren;
als Namespace swal exportieren;

Das Ändern von import 'sweetalert' in require('sweetalert') hat bei mir funktioniert.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4Kommentare

fracz picture fracz  ·  4Kommentare

mateuszjarzewski picture mateuszjarzewski  ·  4Kommentare

yrshaikh picture yrshaikh  ·  4Kommentare

voodoo6 picture voodoo6  ·  4Kommentare