Sweetalert: Angular 5.2.3-エラーTypeError:sweetalert_1.defaultは関数ではありません

作成日 2018年02月06日  ·  13コメント  ·  ソース: t4t5/sweetalert

es5の使用中にこのエラーが発生します。 ただし、es6では正常に動作します。

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

最も参考になるコメント

やあみんな。
これは、デフォルトのエクスポートが開発で異なる方法で処理されるAngularCLIのこのバグに関連しているようです。 彼らは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でアプリが壊れます。これは、明らかにes6の矢印関数がIE 11でまだサポートされておらず、プロジェクトをコンパイルするとエラーが発生するためです。

同じエラーが発生する

image

+1

同じエラーが発生しています。

私もです。

私はsweetalert2に交換することで問題を解決しました。同じチームによって開発されたかどうかはわかりません(そうでない場合は宣伝を申し訳ありません)。
同じ問題を抱えている人に役立つことを願っています。これが修正されたら、swal1に戻って喜んでいます。
ハッピーコーディング!

やあみんな。
これは、デフォルトのエクスポートが開発で異なる方法で処理されるAngularCLIのこのバグに関連しているようです。 彼らは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 default代わりにexport =を使用することを提案しています: https ://www.typescriptlang.org/docs/handbook/modules.html#export --and-import--require

一致するインポートは次のようになります。

import swal = require("sweetalert");

はい、これは非標準の構文であり、ESモジュールを対象とするユーザーに問題を引き起こします。 合成インポートを有効にするか、 import * as swal構文を使用することでこれを回避できますが、適切な解決策は、入力を修正するか、メインのJSファイルの最後にmodule.exports.default = module.exportsを追加することです。人々はそれをESモジュールとしてインポートすることができます。

素晴らしい! 私はこれで終わりです

node_modules / sweetalert / types /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 評価

関連する問題

adiwithadidas picture adiwithadidas  ·  4コメント

vmitchell85 picture vmitchell85  ·  6コメント

girishbr picture girishbr  ·  5コメント

daftspunk picture daftspunk  ·  4コメント

fracz picture fracz  ·  4コメント