Saat Webpack memaketkan modul Anda, ia mengikuti rantai dependensi dari modul yang telah Anda impor (atau diperlukan) dan menarik semua dependensinya dan juga memaketkannya sampai ke akhir rantai.
Jika ada file yang tidak tahu cara memuatnya dalam rantai ketergantungan itu, maka jenis kesalahan ini akan muncul.
Ini terkadang dapat diselesaikan dengan menambahkan pemuat yang tahu cara memuat jenis ketergantungan ini. Namun, jika ketergantungannya adalah modul non-asli maka Webpack tidak dapat memuatnya. Beberapa pemuat tahu cara memuat modul dengan dependensi non-asli dengan mematikan dan mengecualikan bagian non-asli sehingga akan dimuat. Dalam fs
modul misalnya Anda tidak perlu dapat membaca dan menulis file dari disk karena browser tidak dapat melakukannya sehingga tidak perlu menyertakan bagian itu.
Ini menimbulkan pertanyaan:Apa fungsi dari modul luwak yang Anda butuhkan di browser? Bisakah Anda menyertakan fungsionalitas itu saja dan bukan seluruh modul luwak?
Jika Anda dapat melakukan ini maka Anda mungkin dapat memecahkan 2 masalah:
- Anda mungkin memecahkan masalah bundling Webpack karena bagian dari luwak yang Anda sertakan dalam proyek Anda tidak memiliki sub-dependensi yang bermasalah.
- Anda akan membuat bundel yang lebih kecil dengan Webpack karena Anda hanya akan menyertakan bagian yang Anda perlukan sehingga muatan bundle.js ke klien akan jauh lebih kecil.
Sebagai contoh, saya baru-baru ini perlu menggunakan generator mongodb ObjectId di klien. Saya menemukan bahwa Webpack tidak dapat mengatasi import mongodb from 'mongodb'
komponen jadi menggali dependensi saya menemukan bahwa mongodb
tergantung pada mongodb-core
yang tergantung pada bson
yang memiliki ObjectId
metode yang saya butuhkan.
Dengan hanya mengimpor bson
komponen rantai ketergantungan itu saya mengatasi masalah Webpack dan membuat bundel saya jauh lebih kecil.
Jika Anda menggunakan Npm 3 maka kemungkinan besar bson
diinstal di root node_modules
jika Anda sudah menggunakan luwak atau mongodb maka Anda dapat import
tanpa menempatkan referensi eksplisit untuk itu di package.json
. Anda . Ini jelas membawa risiko bahwa jika ketergantungan atas berhenti bergantung padanya maka build Anda akan rusak dan Anda harus npm install
itu secara mandiri. Keuntungan menggunakan pendekatan ini adalah Anda akan selalu menggunakan versi bson
yang sama bahwa ketergantungan atas menggunakan yang mungkin penting.