Sweetalert: Angular 5.2.3 - ERROR TypeError: sweetalert_1.default não é uma função

Criado em 6 fev. 2018  ·  13Comentários  ·  Fonte: t4t5/sweetalert

Estou recebendo este erro ao usar o es5. Mas funciona bem no ES6.

versão 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); } });

Comentários muito úteis

Ei pessoal.
Isso parece estar relacionado a este bug no Angular CLI, onde as exportações padrão são tratadas de forma diferente no dev. Eles parecem ter corrigido na v6.0.0-beta.4

Você ainda recebe algum erro ao executar ng serve --prod ?

Como alternativa, você pode usar esta solução alternativa um tanto suja:

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

swal('test');

Todos 13 comentários

Comecei a ter este erro quando descomentei as seguintes linhas para que meu projeto pudesse ser compatível com IE9, 10 e 11. Localizado em 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';

Alterar o "destino" para es6 como você sugere interrompe meu aplicativo no IE 11, já que aparentemente as funções de seta do es6 ainda não são suportadas no IE 11 e compilar meu projeto gerará um erro.

Tendo o mesmo erro

image

+1

Estou tendo o mesmo erro!

eu também.

Resolvi o problema trocando para sweetalert 2. Não tenho certeza se foi desenvolvido pela mesma equipe (então sinto muito pela propaganda, se não).
Espero que possa ser útil para aqueles que têm o mesmo problema e eu ficaria feliz em voltar para o swal 1 se isso for corrigido.
Boa codificação!

Ei pessoal.
Isso parece estar relacionado a este bug no Angular CLI, onde as exportações padrão são tratadas de forma diferente no dev. Eles parecem ter corrigido na v6.0.0-beta.4

Você ainda recebe algum erro ao executar ng serve --prod ?

Como alternativa, você pode usar esta solução alternativa um tanto suja:

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

swal('test');

@lionralfs Funciona bem.

@lionralfs você é um verdadeiro leão, funcione bem.

A versão npm não exporta uma propriedade default , então as digitações estão erradas. As digitações indicam que ele deve ser tratado como um módulo ES, mas a versão npm é um módulo CommonJS.

A documentação sugere o uso de export = vez de export default neste caso: https://www.typescriptlang.org/docs/handbook/modules.html#export --and-import - require

A importação correspondente é semelhante a esta:

import swal = require("sweetalert");

Sim, é uma sintaxe fora do padrão, o que causará problemas para os usuários que visam os módulos ES. Ao habilitar as importações sintéticas ou usar a sintaxe import * as swal , é possível contornar isso, mas a solução adequada seria corrigir as digitações ou simplesmente adicionar module.exports.default = module.exports ao final do arquivo JS principal. as pessoas podem importá-lo como um módulo ES.

Excelente! terminei

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

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

exportação padrão swal;
exportar como namespace swal; `

para ...

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

exportação padrão swal;
exportar como namespace swal; `

Tive o mesmo problema com o ReactJS, mas o uso de https://github.com/sweetalert/sweetalert-with-react corrigiu o problema

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

krishnamraju picture krishnamraju  ·  3Comentários

jamieson99 picture jamieson99  ·  3Comentários

mouro001 picture mouro001  ·  3Comentários

rapeflower picture rapeflower  ·  4Comentários

AlexV525 picture AlexV525  ·  4Comentários