Sweetalert: Angular 5.2.3 - ERROR TypeError: sweetalert_1.default ist keine Funktion

Erstellt am 6. Feb. 2018  ·  13Kommentare  ·  Quelle: t4t5/sweetalert

Ich erhalte diesen Fehler bei der Verwendung von es5. Aber es funktioniert gut auf es6.

Sweetalert-Version: 2.1.0

tsconfig.json

{
    "compileOnSave": false,
    "compilerOptions": {
        "outDir": "./dist/out-tsc",
        "sourceMap": true,
        "declaration": false,
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2015",
            "dom"
        ]
    }
}

import swal from 'sweetalert'; swal({ text: 'Your request has been processed successfully.', icon: 'success' }).then((value) => { if (value) { console.log(value); } });

Hilfreichster Kommentar

Hallo Leute.
Dies scheint mit diesem Fehler in der Angular-CLI zusammenzuhängen, bei dem Standardexporte in dev anders gehandhabt werden. Sie scheinen es in v6.0.0-beta.4 behoben zu haben

Erhalten Sie immer noch Fehler, wenn Sie ng serve --prod ausführen?

Alternativ können Sie diesen etwas schmutzigen Workaround verwenden:

import * as _swal from 'sweetalert';
import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = _swal as any;

swal('test');

Alle 13 Kommentare

Dieser Fehler trat auf, als ich die folgenden Zeilen auskommentiert habe, damit mein Projekt mit IE9, 10 und 11 kompatibel ist. Befindet sich in polyfills.ts
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
import 'core-js/es7/array';

Das Ändern des "Ziels" in es6, wie Sie vorschlagen, macht meine App auf IE 11 kaputt, da anscheinend es6-Pfeilfunktionen noch nicht auf IE 11 unterstützt werden und das Kompilieren meines Projekts einen Fehler auslöst.

Habe den gleichen Fehler

image

+1

Ich habe den gleichen Fehler!

ich auch.

Ich habe das Problem gelöst, indem ich zu Sweetalert 2 gewechselt habe. Ich bin mir nicht sicher, ob es vom selben Team entwickelt wurde (so tut es mir leid für die Propaganda, wenn nicht).
Ich hoffe, es kann für diejenigen nützlich sein, die das gleiche Problem haben, und ich würde mich freuen, zurück zu swal 1 zu wechseln, wenn dies behoben wird.
Viel Spaß beim Codieren!

Hallo Leute.
Dies scheint mit diesem Fehler in der Angular-CLI zusammenzuhängen, bei dem Standardexporte in dev anders gehandhabt werden. Sie scheinen es in v6.0.0-beta.4 behoben zu haben

Erhalten Sie immer noch Fehler, wenn Sie ng serve --prod ausführen?

Alternativ können Sie diesen etwas schmutzigen Workaround verwenden:

import * as _swal from 'sweetalert';
import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = _swal as any;

swal('test');

@lionralfs Es funktioniert gut.

@lionralfs du bist ein echter Löwe, funktioniert gut.

Die npm-Version exportiert keine default Eigenschaft, daher sind die Eingaben falsch. Die Typisierung zeigt an, dass es als ES-Modul behandelt werden sollte, aber die npm-Version ist ein CommonJS-Modul.

Die Dokumentation schlägt vor, in diesem Fall export = anstelle von export default zu verwenden: https://www.typescriptlang.org/docs/handbook/modules.html#export --and-import--require

Der passende Import sieht so aus:

import swal = require("sweetalert");

Ja, es handelt sich um eine vom Standard abweichende Syntax, die für Benutzer, die auf ES-Module abzielen, Probleme bereiten kann. Durch Aktivieren synthetischer Importe oder Verwenden der import * as swal Syntax ist es möglich, dies zu umgehen, aber die richtige Lösung wäre, entweder die Eingaben zu korrigieren oder einfach module.exports.default = module.exports am Ende der JS-Hauptdatei hinzuzufügen, also Leute können es als ES-Modul importieren.

Groß! ich bin fertig

Bearbeiten Sie node_modules/sweetalert/typings/sweetalert.d.ts von ...
`import swal, {SweetAlert} from" ./core ";

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

Standard-Swal exportieren;
als Namespace swal exportieren; `

zu ...

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

Standard-Swal exportieren;
als Namespace swal exportieren; `

Ich hatte das gleiche Problem mit ReactJS, aber mit https://github.com/sweetalert/sweetalert-with-react wurde es behoben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

adiwithadidas picture adiwithadidas  ·  4Kommentare

rapeflower picture rapeflower  ·  4Kommentare

sastrahost picture sastrahost  ·  5Kommentare

voodoo6 picture voodoo6  ·  4Kommentare

AlexV525 picture AlexV525  ·  4Kommentare