Když Webpack sbalí vaše moduly, řídí se řetězcem závislostí modulu, který jste importovali (nebo požadovali) a stáhne všechny jeho závislosti a také je sbalí až na konec řetězce.
Pokud existuje soubor, který v tomto řetězci závislostí neví, jak načíst, bude vyvolán tento typ chyby.
To lze někdy vyřešit přidáním zavaděče, který ví, jak načíst tento typ závislosti. Pokud je však závislost nenativním modulem, Webpack jej nemůže načíst. Některé zavaděče vědí, jak načíst moduly s nenativními závislostmi tak, že vyřadí a vyloučí nenativní část, aby se načetla. V fs
například nepotřebujete umět číst a zapisovat soubory z disku, protože to prohlížeč neumí, takže není třeba tuto část zahrnout.
To vyvolává otázku:Jakou funkcionalitu z modulu mongoose v prohlížeči potřebujete? Můžete zahrnout pouze tuto funkci a ne celý modul mongoose?
Pokud to dokážete, možná budete schopni vyřešit 2 problémy:
- Problém s balíčkováním Webpack můžete vyřešit, protože část mangusty, kterou zahrnete do svého projektu, nemá problematické dílčí závislosti.
- S Webpackem vytvoříte menší balíček, protože zahrnete pouze ty části, které potřebujete, takže užitečné zatížení bundle.js pro klienta bude mnohem menší.
Jako příklad jsem nedávno potřeboval použít generátor Mongodb ObjectId v klientovi. Zjistil jsem, že Webpack si nedokázal poradit s import mongodb from 'mongodb'
komponenta, takže při kopání do závislostí jsem zjistil, že mongodb
závisí na mongodb-core
což závisí na bson
který má ObjectId
metoda, kterou jsem potřeboval.
Importováním pouze bson
součást tohoto řetězce závislostí Obešel jsem problém s webovým balíkem a svůj balíček jsem mnohem zmenšil.
Pokud používáte Npm 3, pak je velká šance, že bson
je nainstalován v kořenovém adresáři node_modules
pokud již používáte mongoose nebo mongodb, můžete import
to, aniž byste na něj vložili explicitní odkaz ve vašem package.json
. To samozřejmě nese riziko, že pokud na ní přestane horní závislost záviset, vaše sestavení se zlomí a budete muset npm install
to nezávisle. Výhodou použití tohoto přístupu je, že budete vždy používat stejnou verzi bson
že používá horní závislost, což může být důležité.