機能をリクエストしますか、それともバグを報告しますか?
バグ
現在の動作は何ですか?
package.jsonを介してangular6に「signature_pad」:「^ 3.0.0-beta.3」を含めました
すべてのブラウザで正常に動作していますが、IE11ではエラーのためにWebサイトを読み込めません。
何が問題なのか説明のない「Syntaxerror」。
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.jsonにbrowser
が含まれていないため、モジュールが取得されます。 これは、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をサポートしていません。
最も参考になるコメント
この方法でインポートしてみてください:
から変更する:
import SignaturePad from 'signature_pad';
に:
import * as SignaturePad from 'signature_pad/dist/signature_pad';