Socket.io-client: فشل تحميل الملف في IE

تم إنشاؤها على ٢٥ سبتمبر ٢٠١٩  ·  31تعليقات  ·  مصدر: socketio/socket.io-client

t.log = وظيفة (... هـ) {
إرجاع "object" == typeof console && console.log && console.log (... e)
}
فشل تنفيذ هذا الرمز في IE11.
توقع خطأ معرف.

التعليق الأكثر فائدة

إن قول node_modules بدلاً من نشر حزمة تدعم أكبر عدد ممكن من البيئات النشطة هو بمثابة إصبع وسط لأي شخص يدير شركة.
أحتاج إلى اختيار كل حزمة بعناية لنقلها منذ نقل كل شيء بدءًا من وحدات node_modules أكثر من أربعة أضعاف وقت إنشاء بعض المشاريع - أحيانًا من عدة دقائق إلى ساعة. لا أحد لديه وقت لذلك.
اليوم لا يزال عدد أكبر من الأشخاص يستخدمون IE11 أكثر من Firefox. لا يزال IE11 مدعومًا من قبل Microsoft. لا أعتقد أن فرض المعتقدات الشخصية حول عدم تحرك مجتمع JS بالسرعة الكافية هو فعلاً مفيد.

ال 31 كومينتر

كذلك هنا في v2.3.0 و IE 11

كذلك هنا في v2.3.0 و IE 11

عدنا إلى 2.2.0 وهو يستيقظ بشكل جيد.

لقد عدت أيضًا إلى 2.2.0 وهو يعمل بشكل جيد. يبدو أن الكود الذي تم تصديره بواسطة الوحدة النمطية غير صالح ES5.

حسنًا ، لقد تم نقلها بواسطة بابل ... سألقي نظرة على هذا.

لو جيو. 26 سبتمبر 2019 ، 11:09 ، orangejuice [email protected] أ
écrit:

لقد عدت أيضًا إلى 2.2.0 وهو يعمل بشكل جيد.

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/socketio/socket.io-client/issues/1328؟email_source=notifications&email_token=ADDNSFI5LWY4MJXY24WZNNLQLR333A5CNFSM4I2MYYBKYY3PNVWWK3TUL52HS4DFVREXG43
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ADDNSFNC7OUW4Z3BEWLSNRLQLR333ANCNFSM4I2MYYBA
.

حدث هذا بعد تحديث التصحيح من الإصدار 3 إلى الإصدار 4 الذي يستخدم عامل الانتشار في التوزيع القابل للتوزيع.
في كثير من الأحيان يتم استبعاد node_modules من تجميع babel لأسباب تتعلق بالأداء.

حصلت على هذا في IE11 أيضًا.

"SyntaxError: Syntax error
   at ../node_modules/socket.io-client/node_modules/debug/src/browser.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:510:1)
   at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
   at eval code (eval code:7:1)
   at ../node_modules/socket.io-client/lib/url.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:488:1)
   at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
   at eval code (eval code:6:1)
   at ../node_modules/socket.io-client/lib/index.js (http://192.168.86.48:3000/static/vendors~vehicle-Vehicle.jsx.eb6d2ebd6bfc7172757c.js:444:1)
   at __webpack_require__ (http://192.168.86.48:3000/static/client.js?1571655164758:107:12)
   at eval code (eval code:55:22)
   at ./shared/components/catalogue/ValuationCatalogue.jsx (http://192.168.86.48:3000/static/vehicle-Vehicle.jsx.b7e97db41986fa53caa6.js:344:1)"

الخطوط المتضررة

/**
 * Invokes `console.log()` when available.
 * No-op when `console.log` is not a "function".
 *
 * <strong i="9">@api</strong> public
 */
function log(...args) {
    // This hackery is required for IE8/9, where
    // the `console.log` function doesn't have 'apply'
    return typeof console === 'object' &&
        console.log &&
        console.log(...args);
}

ليس لديك حقًا الكثير لإضافته لأنه تم تحديده على أنه رمز غير محوّل.

كذلك هنا في v2.3.0 و IE 11

و iOS9 Safari

هذا تغيير جذري في إصدار نقطة تمت ترقيته تلقائيًا أيضًا. بالنسبة لأولئك الذين ما زالوا يدعمون IE11 ، هذا أمر خطير للغاية ، استغرق منا بضعة أيام لندرك.

كم من الوقت تتوقع أن تستغرقهم لإصلاح المشكلة؟

تتعلق هذه المشكلة بـ debug:4.1.0 لقد استبدلوا الطريقة بالفعل ولكن لا يوجد إصدار جديد حيث تم إصلاح هذه المشكلة.

إصلاح socket.io-client و engine.io-client سيكون لاستبدال الإصدار الحالي debug بالإصدار 4.0.1 .

لسوء الحظ ، يبدو أن المشرف على debug غير مستعد لسماع مشكلتنا على الإطلاق: https://github.com/visionmedia/debug/issues/668#issuecomment -576262641

مرحبا darrachequesne :)

هل يمكنك من فضلك تثبيت حزمة debug لـ socket.io-client إلى 4.0.1 ؟ شكرا لك!

في هذه الأثناء حاولت التواصل مع المشرف على debug وطلبت منه إعادة النظر في اختياره عدم تحويل الحزمة إلى رمز ES5 بعد الآن: https://github.com/ Visionmedia / تصحيح / مشاكل / 745

لقد سمعت هذه المشكلة آلاف المرات. لقد سمعته منذ ظهور المشكلة لأول مرة. يرجى ترجمة التطبيق الخاص بك إذا كنت تريد أن يعمل على متصفحات قديمة ؛ debug هو فقط أول التبعيات التي ستواجهها والتي تمت كتابتها ونشرها كوحدات ES6.

في كثير من الأحيان يتم استبعاد node_modules من تجميع babel لأسباب تتعلق بالأداء.

هذا لا يعني أن القائمين على صيانة الحزم يجب أن يحافظوا على كودهم مثبتًا في العصور الحجرية. نظام جافا سكريبت البيئي بطيء ، نعم ، لكنه أبطأ عندما يبقينا على سبيل المثال IE11 متوقفين. السبب في اختيار debug على الكثير هو أنه واحد من أفضل 10 حزم تعتمد على الحزم ، وبالتالي فهو عادةً أحد الحزم الأولى التي تواجه أخطاء أو مشكلات ، على الرغم من أن 100 من التبعيات الأخرى ستبطئك أسفل أيضًا.

إذا كنت لا تصدقني ، فعليك تحويل debug يدويًا إلى node_modules وحاول تجميع تطبيقك مرة أخرى. على الأرجح ، بناءً على حجم التطبيق الخاص بك ، ستفشل عملية التجميع في مكان آخر.

إذا كانت لديك مشكلة في كفاءة Babel ، فافتح مشكلة في Babel. إذا كانت لديك مشكلة مع CRA لا تقوم بإجراء ترشيح مناسب ، فافتح مشكلة مع CRA.

لا أريد أن أعتبر رافضًا ؛ هذه ليست مشكلة debug .

مما يقولون في هذا الرابط هنا . يبدو أنها مشكلة تكوين babel ، ربما إذا قام الموظفون بتغيير التكوين داخل socket-io-client ، فيمكنه حل المشكلة.

صيح؛ هذا هو الرد الرسمي من فريق بابل. من فضلك خذ مشكلتك هناك.

ما الرد الرسمي؟ كانت المشكلة المرتبطة تتعلق بعدم تحويل babel للحزم المحددة من node_modules عند التهيئة إلى ، وتم إصلاحها.

لا يستخدم Socket.io-client أي بابل للترجمة. إنها تستخدم حزمة الويب فقط لتجميع جميع التبعيات في حزمة واحدة قابلة للتوزيع.

الآن ، إذا كان socket.io-client مدعومًا في المتصفحات القديمة ، فإنه يحتاج إما إلى خطوة تحويل أثناء البناء أو يحتاج إلى الرجوع إلى إصدار سابق أو استبدال التصحيح.

إن نشر حزم الويب التي تحتاج إلى التحويل ليس شائعًا في الواقع. على مدار سنوات التحويل ، صادفته عدة مرات فقط حتى في المشاريع التي تحتوي على تبعيات GBs حرفيًا في node_modules. حتى الآن ، كان كل مشرف لطيفًا بما يكفي للتعامل معه على أنه خطأ ...

هذا هو الرد الذي كنت أشير إليه:

أوافق على أن هذا ليس خطأ debug ، ولكنه مشكلة في كيفية تكوين Babel.

إذا قمت بتهيئة Babel لترجمة وحدات العقدة ولكنها لا تزال لا تعمل ، فيرجى توفير الحد الأدنى من المستودع الذي يمكنني استنساخه للتحقيق فيه.


الآن ، إذا كان socket.io-client مدعومًا في المتصفحات القديمة فإنه يحتاج. . . خطوة النتح

صيح. هذه هي حالة تطوير الويب الحديث.

مع غيغابايت من التبعيات حرفيًا في node_modules

هذه هي المشكلة الحقيقية. ليس debug اختيار عدم التحويل. باستخدام وحدات ES6 ، لا تعد هذه مشكلة بشكل عام لأن التطبيق الخاص بك سوف يقوم فقط بتجميع التبعيات التي يستخدمها ، وبالتالي لن يقوم إلا بترجمة التبعيات التي يستخدمها. يفعل الناس هذا بشكل كبير كل يوم.

حتى الآن ، كان كل مشرف لطيفًا بما يكفي للتعامل معه على أنه خطأ ...

لا يعد استخدام إصدارات صالحة تمامًا من جافا سكريبت خطأً.

إن قول node_modules بدلاً من نشر حزمة تدعم أكبر عدد ممكن من البيئات النشطة هو بمثابة إصبع وسط لأي شخص يدير شركة.
أحتاج إلى اختيار كل حزمة بعناية لنقلها منذ نقل كل شيء بدءًا من وحدات node_modules أكثر من أربعة أضعاف وقت إنشاء بعض المشاريع - أحيانًا من عدة دقائق إلى ساعة. لا أحد لديه وقت لذلك.
اليوم لا يزال عدد أكبر من الأشخاص يستخدمون IE11 أكثر من Firefox. لا يزال IE11 مدعومًا من قبل Microsoft. لا أعتقد أن فرض المعتقدات الشخصية حول عدم تحرك مجتمع JS بالسرعة الكافية هو فعلاً مفيد.

إن قول node_modules بدلاً من نشر حزمة تدعم أكبر عدد ممكن من البيئات النشطة هو بمثابة إصبع وسط لأي شخص يدير شركة.

هذا ليس موقفًا بنّاءً حقًا ، وليس نوع الخطاب الذي أرغب في طرحه شخصيًا في المصدر المفتوح.

أعتقد أنني قلت مقالتي هنا. عذرًا ، لا يتناسب قراري لتحسين إمكانية صيانة وحدة تم تنزيلها ما يقرب من 60 مليون مرة في الأسبوع مع نموذج عملك.

اليوم لا يزال عدد أكبر من الأشخاص يستخدمون IE11 أكثر من Firefox. لا يزال IE11 مدعومًا من قبل Microsoft. لا أعتقد أن فرض المعتقدات الشخصية حول عدم تحرك مجتمع JS بالسرعة الكافية هو فعلاً مفيد.

المشكلة في هذه الحالة هي أن المزيد من الشركات التي تستخدم ie11 ضخمة ، بعد تسجيلاتي ، يأتي 25 ٪ من زائري على سبيل المثال.

أود إظهار الإصبع الأوسط على سبيل المثال ، ولكن عندما تدير شركة ، لا يمكنك إرسالها إلى الجحيم لأنك تريد المال :)

ما هو الحل الحالي لهذه المشكلة؟

ما هو الحل الحالي لهذه المشكلة؟

2.2.0 عندما يمكنك بعد fmoessle

استغرقني 3 أيام لمعرفة الخطأ قادم من socket.io-client module lol

أنا أيضًا قمت بتخفيض إصدار الوحدة إلى 2.2.0

خفضت إلى 2.2.0 عملت معي أيضًا. شكرا.

ربما يكون الحل الجيد هو تبديل socket.io إلى مفترق التصحيح debug-es5 الذي تم تحويله إلى es5.

لقد أمضيت يومًا كاملاً في محاولة جعل babel و webpack يقومان بترجمة debug / src / browser.js ومن المواضيع العديدة التي عثرت عليها ، يبدو أن الكثير من الأشخاص يواجهون هذا أيضًا. يبدو أن الكثير من الوقت الهندسي يمكن توفيره.

بالمناسبة ، يحتوي socket.io v2.2.0 على تسرب للذاكرة تم إصلاحه في 'ws' v7.1.2 (https://github.com/websockets/ws/issues/1617) لذا كن حذرًا في الرجوع إلى إصدار أقدم.

تحرير: أصلحه
كانت معظم المشاركات التي وجدتها توصي بالتوقف عن استبعاد / node_modules / من حزمة الويب ولكن هذا لم ينجح وهو بطيء أيضًا. (من المؤكد أن حزمة الويب كانت تصل إلى الملف لكن بابل لم تكن تقوم بنقله ، ربما تتعلق ب babel / preset-env)

بدلاً من ذلك ، قمت للتو بتثبيت debug-es5 وكان لدي حزمة ويب تستخدم ذلك بدلاً من debug عن طريق إضافة هذا إلى webpack.config.js

  resolve: {
    alias: {
      debug: 'debug-es5',
    },
  },

انا استخدم:

{
  test: /\.js$/,
  use: babelLoader,
  exclude: excludeNodeModulesExcept(['debug']),
},
const babelLoader = {
    loader: 'babel-loader',
    options: {
      // Don't waste time on Gzipping the cache
      cacheCompression: false,
      // This is a feature of `babel-loader` for webpack (not Babel itself).
      // It enables caching results in ./node_modules/.cache/babel-loader/
      // directory for faster rebuilds.
      cacheDirectory: true,
      plugins: ['@babel/plugin-syntax-dynamic-import'],
      presets: [['@babel/env', { modules: false }]],
      sourceMaps: includeSourcemap && !isDevelopmentMode,
    },
  };



md5-af1f69980cb7fa352eba1d2f79ce2612



const excludeNodeModulesExcept = function (modules) {
  var pathSep = path.sep;
  if (pathSep == '\\')
    // must be quoted for use in a regexp:
    pathSep = '\\\\';
  var moduleRegExps = modules.map(function (modName) {
    return new RegExp('node_modules' + pathSep + modName);
  });

  return function (modulePath) {
    if (/node_modules/.test(modulePath)) {
      for (var i = 0; i < moduleRegExps.length; i++)
        if (moduleRegExps[i].test(modulePath)) return false;
      return true;
    }
    return false;
  };
};

يعمل تغيير socket.io-client إلى 2.2.0 بالنسبة لي ولكن فقط بعد إنشاء التطبيق وبدء تشغيله.

في وضع dev ما زلت أحصل على الخطأ

TypeError: الكائن لا يدعم الخاصية أو الأسلوب 'cbrt'
{
[المهام]: ،
__proto__: {} ،
الوصف: "الكائن لا يدعم خاصية أو طريقة 'cbrt'" ،
message: "لا يدعم الكائن خاصية أو طريقة 'cbrt'" ،
الاسم: "TypeError" ،
الرقم: -2146827850 ،
مكدس: "TypeError: الكائن لا يدعم الخاصية أو الأسلوب 'cbrt'
في cielabForwardTransform (رمز EVAL: 39754: 3)
في fromXYZ (كود التقييم: 39763: 3)
في lighten (كود EVAL: 39706: 3)
في genVariations (كود التقييم: 39696: 5)
في التحليل (كود EVE: 39606: 7)
في parsedTheme.get (رمز EVAL: 39498: 7)
في createdStyles.get (كود التقييم: 39466: 7)
في Theme.prototype.applyTheme (كود التقييم: 39297: 5)
في المعالج (رمز EVAL: 39449: 13)
في Vue.prototype. $ watch (كود التقييم: 4941: 9) "،
الرمز (اللغة الاحتياطية) _i.t81c9tw05xo: غير محدد ،
الرمز (عنصر رد الفعل) _h.t81c9tw05xo: غير محدد ،
الرمز (توقف) _n.t81c9tw05xo: غير محدد
}

ربما يكون الحل الجيد هو تبديل socket.io إلى مفترق التصحيح debug-es5 الذي تم تحويله إلى es5.

لقد أمضيت يومًا كاملاً في محاولة جعل babel و webpack يقومان بترجمة debug / src / browser.js ومن المواضيع العديدة التي عثرت عليها ، يبدو أن الكثير من الأشخاص يواجهون هذا أيضًا. يبدو أن الكثير من الوقت الهندسي يمكن توفيره.

بالمناسبة ، يحتوي socket.io v2.2.0 على تسرب للذاكرة تم إصلاحه في 'ws' v7.1.2 ( websockets / ws # 1617 ) لذا كن حذرًا في الرجوع إلى إصدار

تحرير: أصلحه
كانت معظم المشاركات التي وجدتها توصي بالتوقف عن استبعاد / node_modules / من حزمة الويب ولكن هذا لم ينجح وهو بطيء أيضًا. (من المؤكد أن حزمة الويب كانت تصل إلى الملف لكن بابل لم تكن تقوم بنقله ، ربما تتعلق ب babel / preset-env)

بدلاً من ذلك ، قمت للتو بتثبيت debug-es5 وكان لدي حزمة ويب تستخدم ذلك بدلاً من debug عن طريق إضافة هذا إلى webpack.config.js

  resolve: {
    alias: {
      debug: 'debug-es5',
    },
  },

هذا وفر لي ساعات من العمل - شكرا لك!

لقد قمت بإنشاء ريبو صغير جدًا مع حل هذه المشكلة من خلال تكوين Webpack الأساسي: https://github.com/kmaraz/debug-to-es5

تمت إعادة التبعية debug إلى 3.1.0 ، والتي لا تحتاج إلى التحويل. صدر في 2.3.1 .

يرجى ملاحظة أنه يمكنك أيضًا استخدام المكون الإضافي webpack-remove-debug ، من أجل إزالة أي استدعاء لتبعية debug (حتى نجد طريقة مناسبة لتوفير بنية مع تصحيح أخطاء وبدون تصحيح).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

crazyyi picture crazyyi  ·  5تعليقات

Warrior-hound picture Warrior-hound  ·  5تعليقات

newpanjing picture newpanjing  ·  3تعليقات

catamphetamine picture catamphetamine  ·  3تعليقات

BorntraegerMarc picture BorntraegerMarc  ·  4تعليقات