Socket.io-client: Gagal memuat file di IE

Dibuat pada 25 Sep 2019  ·  31Komentar  ·  Sumber: socketio/socket.io-client

t.log = fungsi(...e) {
return "object" == typeof console && console.log && console.log(...e)
}
kode ini gagal dijalankan di IE11.
Kesalahan Pengenal yang Diharapkan.

Komentar yang paling membantu

Mengatakan transpile node_modules alih-alih menerbitkan paket yang mendukung sebanyak mungkin lingkungan aktif adalah jari tengah bagi siapa pun yang menjalankan bisnis.
Saya perlu hati-hati memilih setiap paket untuk transpile karena transpiling semuanya dari node_modules lebih dari empat kali lipat waktu pembangunan beberapa proyek - kadang-kadang dari beberapa menit sampai satu jam. Tidak ada yang punya waktu untuk itu.
Saat ini lebih banyak orang yang masih menggunakan IE11 daripada Firefox. IE11 masih didukung oleh Microsoft. Saya tidak berpikir bahwa memaksakan keyakinan pribadi tentang komunitas JS tidak bergerak cukup cepat benar-benar ada gunanya.

Semua 31 komentar

Sama di sini di v2.3.0 dan IE 11

Sama di sini di v2.3.0 dan IE 11

Kami kembali ke 2.2.0 dan berjalan dengan baik.

Saya juga kembali ke 2.2.0 dan berfungsi dengan baik. Sepertinya kode yang diekspor oleh modul bukan ES5 yang valid.

Yah, seharusnya sudah ditranspilasikan oleh babel... Aku akan lihat ini.

Le jeu. 26 september 2019 11:09, orangejuice [email protected] a
écrit:

Saya juga kembali ke 2.2.0 dan berfungsi dengan baik.


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/socketio/socket.io-client/issues/1328?email_source=notifications&email_token=ADDNSFI5LWY4MJXY24WZNNLQLR333A5CNFSM4I2MYYBKYY3PNVWWK3TUL52HS4DFVREXG43VMXVBWQ417issue
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/ADDNSFNC7OUW4Z3BEWLSNRLQLR333ANCNFSM4I2MYYBA
.

Ini terjadi setelah memperbarui debug dari v3 ke v4 yang menggunakan operator spread dalam distributable-nya.
Sangat sering node_modules dikeluarkan dari kompilasi babel karena alasan kinerja.

Dapatkan ini di IE11 juga.

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

Garis yang terpengaruh

/**
 * 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);
}

Tidak banyak yang perlu ditambahkan karena telah diidentifikasi sebagai kode yang tidak ditranskripsikan.

Sama di sini di v2.3.0 dan IE 11

dan iOS9 Safari

Ini adalah perubahan besar pada rilis poin yang kami dapatkan secara otomatis juga ditingkatkan. Bagi yang masih mendukung IE11 ini cukup serius, kami butuh beberapa hari untuk menyadarinya.

Berapa lama waktu yang Anda butuhkan untuk memperbaiki masalah tersebut?

masalah ini terkait dengan debug:4.1.0 Mereka telah mengganti metode tetapi tidak ada build baru yang memperbaiki masalah ini.

perbaikan untuk socket.io-client dan engine.io-client adalah mengganti versi saat ini debug dengan versi 4.0.1 .

Sayangnya, sepertinya pengelola debug sama sekali tidak mau mendengar masalah kami: https://github.com/visionmedia/debug/issues/668#issuecomment -576262641

Hai @darrachequesne :)

Bisakah Anda menyematkan paket debug untuk socket.io-client ke 4.0.1 ? Terima kasih!

Sementara itu saya mencoba mendekati pengelola debug dan memintanya untuk mempertimbangkan kembali pilihannya untuk tidak mengubah paket menjadi kode ES5 lagi: https://github.com/ visionmedia/debug/masalah/745

Saya telah mendengar masalah itu ribuan kali. Saya sudah mendengarnya sejak masalah pertama kali dibuat. Harap transpile aplikasi Anda jika Anda ingin itu berfungsi pada browser kuno; debug hanyalah yang pertama dari banyak dependensi yang akan Anda hadapi yang ditulis dan diterbitkan sebagai modul ES6.

Sangat sering node_modules dikeluarkan dari kompilasi babel karena alasan kinerja.

Ini tidak berarti pengelola paket harus menyimpan kode mereka disematkan ke zaman batu. Ekosistem javascript lambat, ya, tetapi bahkan lebih lambat ketika misalnya IE11 membuat kita menahan diri. Alasan mengapa debug banyak dipilih adalah karena ini adalah salah satu dari 10 paket yang paling bergantung pada paket dan dengan demikian biasanya merupakan salah satu paket pertama yang mengalami kesalahan atau masalah, meskipun 100-an dependensi lain akan memperlambat Anda turun juga.

Jika Anda tidak percaya, transpile secara manual debug di node_modules dan coba gabungkan aplikasi Anda lagi. Kemungkinan besar, tergantung pada ukuran aplikasi Anda, proses bundling akan gagal di tempat lain.

Jika Anda memiliki masalah dengan efisiensi Babel, buka masalah di Babel. Jika Anda memiliki masalah dengan CRA yang tidak melakukan transpilasi dengan benar, buka masalah dengan CRA.

Saya tidak ingin dianggap meremehkan; ini bukan masalah debug .

Dari apa yang mereka katakan di tautan ini di sini . Tampaknya menjadi masalah konfigurasi babel, mungkin jika staf mengubah konfigurasi di dalam socket-io-client itu dapat menyelesaikan masalah.

Benar; begitulah tanggapan resmi dari tim Babel. Silakan bawa masalah Anda ke sana.

Apa tanggapan resmi? Masalah yang ditautkan adalah tentang babel yang tidak mentranspilasikan paket yang dipilih dari node_modules saat dikonfigurasi, dan sudah diperbaiki.

Socket.io-client bahkan tidak menggunakan babel untuk transpiling. Itu hanya menggunakan webpack untuk menggabungkan semua dependensi menjadi satu yang dapat didistribusikan.

Jadi sekarang, jika socket.io-client ingin didukung di browser lama, diperlukan langkah transpilasi saat membangun atau perlu menurunkan versi atau mengganti debug.

Menerbitkan paket untuk web yang membutuhkan transpilasi sebenarnya tidak terlalu umum. Selama bertahun-tahun transpiling saya menemukannya hanya beberapa kali bahkan pada proyek dengan dependensi GB secara harfiah di node_modules. Sampai sekarang setiap pengelola cukup baik untuk memperlakukannya sebagai bug...

Ini adalah tanggapan yang saya maksud:

Saya setuju bahwa ini bukan bug debug , tetapi masalah dengan konfigurasi Babel.

Jika Anda mengonfigurasi Babel untuk mentranspile modul simpul tetapi masih tidak berfungsi, berikan repositori minimal yang dapat saya tiru untuk diselidiki.


Jadi sekarang, jika socket.io-client ingin didukung di browser lama, diperlukan . . . langkah transpilasi

Benar. Itulah keadaan pengembangan web modern.

dengan dependensi GB secara harfiah di node_modules

Ini adalah masalah sebenarnya. Bukan debug memilih untuk tidak melakukan transpile. Dengan menggunakan modul ES6, ini umumnya tidak menjadi masalah karena aplikasi Anda hanya akan menggabungkan dependensi yang digunakannya, dan dengan demikian hanya akan mengubah dependensi yang digunakannya. Orang-orang melakukan ini dengan sangat baik setiap hari.

Sampai sekarang setiap pengelola cukup baik untuk memperlakukannya sebagai bug...

Menggunakan versi Javascript yang benar-benar valid bukanlah bug.

Mengatakan transpile node_modules alih-alih menerbitkan paket yang mendukung sebanyak mungkin lingkungan aktif adalah jari tengah bagi siapa pun yang menjalankan bisnis.
Saya perlu hati-hati memilih setiap paket untuk transpile karena transpiling semuanya dari node_modules lebih dari empat kali lipat waktu pembangunan beberapa proyek - kadang-kadang dari beberapa menit sampai satu jam. Tidak ada yang punya waktu untuk itu.
Saat ini lebih banyak orang yang masih menggunakan IE11 daripada Firefox. IE11 masih didukung oleh Microsoft. Saya tidak berpikir bahwa memaksakan keyakinan pribadi tentang komunitas JS tidak bergerak cukup cepat benar-benar ada gunanya.

Mengatakan transpile node_modules alih-alih menerbitkan paket yang mendukung sebanyak mungkin lingkungan aktif adalah jari tengah bagi siapa pun yang menjalankan bisnis.

Itu bukan sikap yang konstruktif, dan bukan jenis wacana yang saya inginkan di open source, secara pribadi.

Saya pikir saya sudah mengatakan bagian saya di sini. Maaf keputusan saya untuk meningkatkan pemeliharaan modul yang diunduh hampir 60 juta kali seminggu tidak sesuai dengan model bisnis Anda.

Saat ini lebih banyak orang yang masih menggunakan IE11 daripada Firefox. IE11 masih didukung oleh Microsoft. Saya tidak berpikir bahwa memaksakan keyakinan pribadi tentang komunitas JS tidak bergerak cukup cepat benar-benar ada gunanya.

masalah dalam hal ini lebih bahwa perusahaan menggunakan ie11 besar-besaran, setelah log saya 25% dari pengunjung saya datang yaitu.

Saya ingin menunjukkan jari tengah kepada yaitu tetapi ketika Anda menjalankan bisnis Anda tidak dapat mengirim mereka ke neraka karena Anda ingin ada uang :)

Apa solusi saat ini untuk masalah ini?

Apa solusi saat ini untuk masalah ini?

2.2.0 ketika Anda bisa setelah fmoessle

Butuh waktu 3 hari untuk mengetahui bug itu berasal dari modul socket.io-client lol

Saya juga saya downgrade versi modul ke 2.2.0 sorakan semua

Menurunkan versi ke 2.2.0 juga berhasil untuk saya. Terima kasih.

Mungkin solusi yang baik adalah mengganti socket.io ke garpu debug debug-es5 ini yang ditranspilasikan ke es5.

Saya telah menghabiskan sepanjang hari mencoba untuk mendapatkan babel dan webpack untuk mentranspile debug/src/browser.js dan dari banyak utas yang saya temukan sepertinya banyak orang juga mengalami hal ini. Sepertinya banyak waktu rekayasa yang bisa dihemat.

Omong-omong, socket.io v2.2.0 memiliki kebocoran memori yang telah diperbaiki di 'ws' v7.1.2 (https://github.com/websockets/ws/issues/1617) jadi berhati-hatilah saat menurunkan versi.

Sunting: sudah diperbaiki
Sebagian besar posting yang saya temukan merekomendasikan untuk berhenti mengecualikan /node_modules/ dari webpack tetapi ini tidak berhasil dan juga lambat. (cukup yakin webpack mengenai file tetapi babel tidak mengubahnya, mungkin terkait dengan babel/preset-env)

Sebagai gantinya, saya baru saja menginstal debug-es5 dan meminta webpack menggunakannya sebagai pengganti debug dengan menambahkan ini ke webpack.config.js

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

Saya menggunakan:

{
  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;
  };
};

mengubah socket.io-client ke 2.2.0 berfungsi untuk saya tetapi hanya setelah membangun dan memulai aplikasi.

dalam mode dev saya masih mendapatkan kesalahan

TypeError: Objek tidak mendukung properti atau metode 'cbrt'
{
[fungsi]: ,
__proto__: {},
deskripsi: "Objek tidak mendukung properti atau metode 'cbrt'",
pesan: "Objek tidak mendukung properti atau metode 'cbrt'",
nama: "TypeError",
nomor: -2146827850,
stack: "TypeError: Objek tidak mendukung properti atau metode 'cbrt'
di cielabForwardTransform (kode eval:39754:3)
di fromXYZ (kode evaluasi:39763:3)
di lighten (kode eval:39706:3)
di genVariations (kode evaluasi:39696:5)
di parse (kode evaluasi:39606:7)
di parsedTheme.get (kode evaluasi:39498:7)
di generateStyles.get (kode evaluasi:39466:7)
di Theme.prototype.applyTheme (kode evaluasi:39297:5)
di handler (kode eval:39449:13)
di Vue.prototype.$watch (kode evaluasi:4941:9)",
Simbol(Lang fallback)_i.t81c9tw05xo: tidak terdefinisi,
Simbol(reaksi.elemen)_h.t81c9tw05xo: tidak terdefinisi,
Simbol(berhenti)_n.t81c9tw05xo: tidak terdefinisi
}

Mungkin solusi yang baik adalah mengganti socket.io ke garpu debug debug-es5 ini yang ditranspilasikan ke es5.

Saya telah menghabiskan sepanjang hari mencoba untuk mendapatkan babel dan webpack untuk mentranspile debug/src/browser.js dan dari banyak utas yang saya temukan sepertinya banyak orang juga mengalami hal ini. Sepertinya banyak waktu rekayasa yang bisa dihemat.

Omong-omong, socket.io v2.2.0 memiliki kebocoran memori yang telah diperbaiki di 'ws' v7.1.2 ( websockets/ws#1617 ) jadi berhati-hatilah saat menurunkan versi.

Sunting: sudah diperbaiki
Sebagian besar posting yang saya temukan merekomendasikan untuk berhenti mengecualikan /node_modules/ dari webpack tetapi ini tidak berhasil dan juga lambat. (cukup yakin webpack mengenai file tetapi babel tidak mengubahnya, mungkin terkait dengan babel/preset-env)

Sebagai gantinya, saya baru saja menginstal debug-es5 dan meminta webpack menggunakannya sebagai pengganti debug dengan menambahkan ini ke webpack.config.js

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

Ini menghemat jam kerja saya - terima kasih!

Saya telah membuat repo yang sangat kecil dengan masalah ini diselesaikan dengan konfigurasi Webpack dasar: https://github.com/kmaraz/debug-to-es5

Ketergantungan debug dikembalikan ke 3.1.0 , yang tidak perlu ditranspilasikan. Dirilis di 2.3.1 .

Harap perhatikan bahwa Anda juga dapat menggunakan plugin webpack-remove-debug , untuk menghapus panggilan apa pun ke dependensi debug (sampai kami menemukan cara yang tepat untuk menyediakan build dengan dan tanpa debug).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat