Sweetalert: Angular 5.2.3 - ERREUR TypeError : sweetalert_1.default n'est pas une fonction

Créé le 6 févr. 2018  ·  13Commentaires  ·  Source: t4t5/sweetalert

J'obtiens cette erreur lors de l'utilisation d'es5. Mais cela fonctionne bien sur 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); } });

Commentaire le plus utile

Salut les gars.
Cela semble être lié à ce bogue dans Angular CLI où les exportations par défaut sont gérées différemment dans dev. Ils semblent l'avoir corrigé dans la v6.0.0-beta.4

Avez-vous toujours des erreurs lors de l'exécution de ng serve --prod ?

Alternativement, vous pouvez utiliser cette solution de contournement quelque peu sale :

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

swal('test');

Tous les 13 commentaires

J'ai commencé à avoir cette erreur lorsque j'ai décommenté les lignes suivantes afin que mon projet soit compatible avec IE9, 10 et 11. Situé dans 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';

Changer la "cible" en es6 comme vous le suggérez interrompt mon application sur IE 11 car apparemment les fonctions de flèche es6 ne sont pas encore prises en charge sur IE 11 et la compilation de mon projet générera une erreur.

Avoir la même erreur

image

+1

J'ai la même erreur !

Moi aussi.

J'ai résolu le problème en passant à sweetalert 2. Je ne sais pas si c'est développé par la même équipe (donc je suis désolé pour la propagande sinon).
J'espère que cela pourra être utile pour ceux qui ont le même problème et je serais heureux de revenir à swal 1 si cela est résolu.
Bon codage !

Salut les gars.
Cela semble être lié à ce bogue dans Angular CLI où les exportations par défaut sont gérées différemment dans dev. Ils semblent l'avoir corrigé dans la v6.0.0-beta.4

Avez-vous toujours des erreurs lors de l'exécution de ng serve --prod ?

Alternativement, vous pouvez utiliser cette solution de contournement quelque peu sale :

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

swal('test');

@lionralfs Cela fonctionne bien.

@lionralfs tu es un vrai lion, ça marche bien.

La version npm n'exporte pas default propriété

La documentation suggère d'utiliser export = au lieu de export default dans ce cas : https://www.typescriptlang.org/docs/handbook/modules.html#export --and-import--require

L'importation correspondante ressemble à ceci :

import swal = require("sweetalert");

Oui, c'est une syntaxe non standard, ce qui posera des problèmes aux utilisateurs ciblant les modules ES. En activant les importations synthétiques ou en utilisant la syntaxe import * as swal il est possible de contourner ce problème, mais la bonne solution serait soit de corriger les frappes, soit d'ajouter simplement module.exports.default = module.exports à la fin du fichier JS principal afin les gens peuvent l'importer en tant que module ES.

Super! J'ai fini

Modifier node_modules/sweetalert/typings/sweetalert.d.ts à partir de ...
`importer swal, {SweetAlert} depuis" ./core " ;

déclarer global {
const swal : SweetAlert ;
const sweetAlert: SweetAlert;
}

exporter le swal par défaut ;
exporter en tant qu'espace de noms swal ; `

à ...

`importer swal, {SweetAlert} depuis" ./core " ;

exporter le swal par défaut ;
exporter en tant qu'espace de noms swal ; `

J'ai eu le même problème avec ReactJS, mais en utilisant https://github.com/sweetalert/sweetalert-with-react l'a résolu

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

rafatux picture rafatux  ·  5Commentaires

vmitchell85 picture vmitchell85  ·  6Commentaires

waldyrious picture waldyrious  ·  5Commentaires

adiwithadidas picture adiwithadidas  ·  4Commentaires

sastrahost picture sastrahost  ·  5Commentaires