هل تريد طلب ميزة أو الإبلاغ عن خطأ؟
حشرة
ما هو السلوك الحالي؟
لقد قمت بتضمين "signature_pad": "^ 3.0.0-beta.3" في angular6 عبر package.json
إنه يعمل بشكل جيد في جميع المتصفحات ، ولكن في IE11 لا يمكن تحميل موقع الويب بسبب خطأ.
"خطأ نحوي" بدون أي وصف ما هو الخطأ.
ليس لدي أي فكرة عن الشكل الذي تبدو عليه عملية إنشاء 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 - تعمل لأن اثنين آخرين غير مدعومين في IE 11
وإلا إذا (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 browser
في package.json ، لذلك يتم انتقاء الوحدة. يعين هذا الملف .m.js
، والذي يتضمن بناء جملة ES6 مثل class - والذي لا يدعمه IE11.
szimek أوصيك بتحديث package.json لتضمين حقل متصفح وفقًا لتوصيات npm هنا:
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 لا يدعم IE11 بسبب الكلمة الأساسية class
.
التعليق الأكثر فائدة
حاول الاستيراد بهذه الطريقة:
تغيير من:
import SignaturePad from 'signature_pad';
ل:
import * as SignaturePad from 'signature_pad/dist/signature_pad';