Sweetalert: Angular 5.2.3 - 错误类型错误:sweetalert_1.default 不是函数

创建于 2018-02-06  ·  13评论  ·  资料来源: t4t5/sweetalert

我在使用 es5 时收到此错误。 但它在 es6 上运行良好。

Sweetalert 版本:2.1.0

配置文件

{
    "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); } });

最有用的评论

大家好。
这似乎与 Angular CLI 中的这个错误有关,其中默认导出在开发中的处理方式不同。 他们似乎在 v6.0.0-beta.4 中修复了它

运行ng serve --prod时是否仍然出现任何错误?

或者,您可以使用这种有点脏的解决方法:

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

swal('test');

所有13条评论

当我取消注释以下几行以便我的项目与 IE9、10 和 11 兼容时,我开始遇到此错误。位于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';

按照您的建议将“目标”更改为 es6 会破坏我在 IE 11 上的应用程序,因为 IE 11 显然尚不支持 es6 箭头函数,并且编译我的项目会引发错误。

有同样的错误

image

+1

我有同样的错误!

我也是。

我通过切换到 sweetalert 2 解决了这个问题。我不确定它是否由同一团队开发(如果不是,我很抱歉宣传)。
希望它对那些有同样问题的人有用,如果这个问题得到解决,我很乐意切换回 swal 1。
快乐编码!

大家好。
这似乎与 Angular CLI 中的这个错误有关,其中默认导出在开发中的处理方式不同。 他们似乎在 v6.0.0-beta.4 中修复了它

运行ng serve --prod时是否仍然出现任何错误?

或者,您可以使用这种有点脏的解决方法:

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

swal('test');

@lionralfs它工作正常。

@lionralfs你是一个真正的狮子工作正常。

npm 版本不导出default属性,因此类型错误。 类型表明它应该被视为 ES 模块,但 npm 版本是一个 CommonJS 模块。

文档建议在这种情况下使用export =而不是export defaulthttps: //www.typescriptlang.org/docs/handbook/modules.html#export --and-import--require

匹配的导入如下所示:

import swal = require("sweetalert");

是的,它是非标准语法,这会给以 ES 模块为目标的用户带来问题。 通过启用综合导入或使用import * as swal语法可以解决这个问题,但正确的解决方案是纠正类型或简单地将module.exports.default = module.exports到主 JS 文件的末尾,以便人们可以将其作为 ES 模块导入。

伟大的! 我受够了

从 ... 编辑 node_modules/sweetalert/typings/sweetalert.d.ts
`import swal, {SweetAlert} from" ./core ";

声明全局{
const swal: SweetAlert;
const sweetAlert: SweetAlert;
}

导出默认值;
导出为命名空间 swal;`

到 ...

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

导出默认值;
导出为命名空间 swal;`

我在 ReactJS 上遇到了同样的问题,但是使用https://github.com/sweetalert/sweetalert-with-react修复了它

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

AlexV525 picture AlexV525  ·  4评论

waldyrious picture waldyrious  ·  5评论

rapeflower picture rapeflower  ·  4评论

jamieson99 picture jamieson99  ·  3评论

blackrosezy picture blackrosezy  ·  6评论