Signature_pad: Kesalahan Sintaks IE11

Dibuat pada 6 Nov 2018  ·  7Komentar  ·  Sumber: szimek/signature_pad

Apakah Anda ingin meminta fitur atau melaporkan bug?
Serangga

Apa perilaku saat ini?
Saya telah menyertakan "signature_pad": "^3.0.0-beta.3" di angular6 melalui package.json
Ini berfungsi dengan baik di semua Peramban, tetapi pada IE11 situs web tidak dapat dimuat karena kesalahan.

image

"Syntaxerror" tanpa deskripsi apa pun yang salah.

Komentar yang paling membantu

Coba impor dengan cara ini:
berubah dari:
import SignaturePad from 'signature_pad';
ke:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

Semua 7 komentar

Saya tidak tahu bagaimana tampilan proses build Angular 6, tetapi Anda harus mengompilasinya menggunakan konfigurasi Babel yang sama dengan yang Anda gunakan untuk mengkompilasi kode Anda sendiri.

Anda juga dapat menggunakan fitur webpack resolve.alias (tidak diuji), yang seharusnya memungkinkan Anda untuk memuat versi yang sudah dikompilasi sebagai gantinya:

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

Terima kasih atas respon cepat Anda.
Saya akan mencobanya. Saya juga akan mencoba polyfill babel jika ide Anda tidak berhasil. Saya tidak pernah menggunakannya sebelumnya.

Coba impor dengan cara ini:
berubah dari:
import SignaturePad from 'signature_pad';
ke:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

fungsi unduh (dataURL, nama file) {
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") === -1) {
jendela.buka(dataURL);
}
### //Tambahkan pernyataan di bawah ini di app.js - ini berfungsi karena dua lainnya tidak didukung di IE 11
else if(window.navigator && window.navigator.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin, nama file);}
lain {
var gumpalan = dataURLToBlob(dataURL);
var url = window.URL.createObjectURL(gumpalan);

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

}
}

Solusi @sdqwerty berhasil untuk saya. Namun, perlu dicatat bahwa webpack memiliki bidang bernama mainFields yang defaultnya adalah ['browser', 'module', 'main'] . Ini berada dalam urutan prioritas, dan signature_pad tidak menyertakan browser di package.json , jadi modul diambil. Ini memetakan ke file .m.js , yang menyertakan sintaks seperti kelas ES6 -- yang tidak didukung oleh IE11.

@szimek Saya sarankan Anda memperbarui package.json untuk memasukkan bidang browser sesuai rekomendasi npm di sini:
https://docs.npmjs.com/files/package.json#browser

Itu akan menyelesaikan masalah IE11 ini.

Ini berhasil untuk saya:

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

Dan dengan Laravel-Mix:

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

Saya tidak tahu bagaimana tampilan proses build Angular 6, tetapi Anda harus mengompilasinya menggunakan konfigurasi Babel yang sama dengan yang Anda gunakan untuk mengkompilasi kode Anda sendiri.

Anda juga dapat menggunakan fitur webpack resolve.alias (tidak diuji), yang seharusnya memungkinkan Anda untuk memuat versi yang sudah dikompilasi sebagai gantinya:

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

Versi kompilasi v3.0.0-beta.4 tidak mendukung IE11 karena kata kunci class .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

50l3r picture 50l3r  ·  3Komentar

siggifv picture siggifv  ·  3Komentar

lowe493 picture lowe493  ·  5Komentar

hostcia picture hostcia  ·  6Komentar

chenks picture chenks  ·  7Komentar