Sweetalert: Angular 5.2.3 - ERROR TypeError: sweetalert_1.default no es una función

Creado en 6 feb. 2018  ·  13Comentarios  ·  Fuente: t4t5/sweetalert

Recibo este error mientras uso es5. Pero funciona bien en es6.

versión de sweetalert: 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); } });

Comentario más útil

Hola chicos.
Esto parece estar relacionado con este error en Angular CLI donde las exportaciones predeterminadas se manejan de manera diferente en dev. Parece que lo han arreglado en v6.0.0-beta.4

¿Sigue recibiendo errores al ejecutar ng serve --prod ?

Alternativamente, puede usar esta solución un tanto sucia:

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

swal('test');

Todos 13 comentarios

Comencé a tener este error cuando quité los comentarios de las siguientes líneas para que mi proyecto pudiera ser compatible con IE9, 10 y 11. Ubicado en 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';

Cambiar el "objetivo" a es6 como sugieres rompe mi aplicación en IE 11 ya que aparentemente las funciones de flecha de es6 aún no son compatibles con IE 11 y compilar mi proyecto arrojará un error.

Tener el mismo error

image

+1

¡Tengo el mismo error!

Yo también.

Resolví el problema cambiando a sweetalert 2. No estoy seguro si fue desarrollado por el mismo equipo (así que lamento la propaganda si no).
Espero que pueda ser útil para quienes tienen el mismo problema y me complacería volver a tragar 1 si esto se soluciona.
¡Feliz codificación!

Hola chicos.
Esto parece estar relacionado con este error en Angular CLI donde las exportaciones predeterminadas se manejan de manera diferente en dev. Parece que lo han arreglado en v6.0.0-beta.4

¿Sigue recibiendo errores al ejecutar ng serve --prod ?

Alternativamente, puede usar esta solución un tanto sucia:

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

swal('test');

@lionralfs Funciona bien.

@lionralfs , eres un verdadero león, funciona bien.

La versión npm no exporta una propiedad default , por lo que la tipificación es incorrecta. Las tipificaciones indican que debe tratarse como un módulo ES, pero la versión npm es un módulo CommonJS.

La documentación sugiere usar export = lugar de export default en este caso: https://www.typescriptlang.org/docs/handbook/modules.html#export --and-import - require

La importación coincidente se ve así:

import swal = require("sweetalert");

Sí, es una sintaxis no estándar, lo que causará problemas a los usuarios que se dirijan a los módulos ES. Al habilitar las importaciones sintéticas o usar la sintaxis import * as swal , es posible solucionar esto, pero la solución adecuada sería corregir los mecanografiados o simplemente agregar module.exports.default = module.exports al final del archivo JS principal, por lo que la gente puede importarlo como un módulo ES.

¡Excelente! He terminado

Edite node_modules / sweetalert / typings / sweetalert.d.ts de ...
`import swal, {SweetAlert} de" ./core ";

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

exportar gol por defecto;
exportar como espacio de nombres swal;

para ...

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

exportar gol por defecto;
exportar como espacio de nombres swal;

Tuve el mismo problema con ReactJS, pero el uso de https://github.com/sweetalert/sweetalert-with-react lo solucionó

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Untit1ed picture Untit1ed  ·  5Comentarios

mateuszjarzewski picture mateuszjarzewski  ·  4Comentarios

waldyrious picture waldyrious  ·  5Comentarios

Lusitaniae picture Lusitaniae  ·  4Comentarios

girishbr picture girishbr  ·  5Comentarios