Signature_pad: IE11構文エラー

作成日 2018年11月06日  ·  7コメント  ·  ソース: szimek/signature_pad

機能をリクエストしますか、それともバグを報告しますか?
バグ

現在の動作は何ですか?
package.jsonを介してangular6に「signature_pad」:「^ 3.0.0-beta.3」を含めました
すべてのブラウザで正常に動作していますが、IE11ではエラーのためにWebサイトを読み込めません。

image

何が問題なのか説明のない「Syntaxerror」。

最も参考になるコメント

この方法でインポートしてみてください:
から変更する:
import SignaturePad from 'signature_pad';
に:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

全てのコメント7件

Angular 6のビルドプロセスがどのように見えるかはわかりませんが、独自のコードのコンパイルに使用するのと同じBabel構成を使用してコンパイルする必要があります。

webpack resolve.alias機能(テストされていません)を使用することもできます。これにより、代わりにコンパイル済みのバージョンをロードできるようになります。

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

迅速な対応ありがとうございます。
やってみます。 あなたのアイデアがうまくいかない場合は、バベルポリフィルも試してみます。 今まで使ったことがありません。

この方法でインポートしてみてください:
から変更する:
import SignaturePad from 'signature_pad';
に:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

関数ダウンロード(dataURL、ファイル名){
if(navigator.userAgent.indexOf( "Safari")> -1 && navigator.userAgent.indexOf( "Chrome")=== -1){
window.open(dataURL);
}
### //app.jsに以下のステートメントを追加します-他の2つはIE11ではサポートされていないため機能します
else if(window.navigator && window.navigator.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin、filename);}
そうしないと {
var blob = dataURLToBlob(dataURL);
var url = window.URL.createObjectURL(blob);

var a = document.createElement("a");
a.style = "display: none";
a.href = url;
a.download = filename;

document.body.appendChild(a);
a.click();

window.URL.revokeObjectURL(url);

}
}

@sdqwertyの回避策は私のために働いた。 ただし、webpackにはmainFieldsというフィールドがあり、デフォルトは['browser', 'module', 'main']であることに注意してください。 これらは優先順位が高く、signature_padにはpackage.jsonbrowserが含まれていないため、モジュールが取得されます。 これは、IE11がサポートしていないクラスのようなES6構文を含む.m.jsファイルにマップされます。

@szimekここでnpmの推奨事項に従って、ブラウザフィールドを含めるようにpackage.jsonを更新することをお勧めします。
https://docs.npmjs.com/files/package.json#browser

これで、これらのIE11の問題が解決するはずです。

これは私のために働いた:

module.exports = {
  resolve: {
    alias: {
      'signature_pad': 'signature_pad/dist/signature_pad' // <- hier without '.js' at the end!
    }
  }
};

そしてLaravel-Mixで:

mix.webpackConfig({
    resolve: {
        alias: {
            'signature_pad': 'signature_pad/dist/signature_pad',
        }
    }
});

Angular 6のビルドプロセスがどのように見えるかはわかりませんが、独自のコードのコンパイルに使用するのと同じBabel構成を使用してコンパイルする必要があります。

webpack resolve.alias機能(テストされていません)を使用することもできます。これにより、代わりにコンパイル済みのバージョンをロードできるようになります。

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

v3.0.0-beta.4コンパイル済みバージョンは、 classキーワードのため、IE11をサポートしていません。

このページは役に立ちましたか?
0 / 5 - 0 評価