sql >> Databasteknik >  >> NoSQL >> MongoDB

Modulen hittades inte:Fel:Kan inte lösa modulen 'modul' mongodb vid buntning med webpack

När Webpack paketerar dina moduler följer det beroendekedjan för modulen som du har importerat (eller krävt) och drar in alla dess beroenden och buntar dem även hela vägen ner till slutet av kedjan.

Om det finns en fil som den inte vet hur den ska laddas i den beroendekedjan kommer den här typen av fel att visas.

Detta kan ibland lösas genom att lägga till en laddare som vet hur man laddar denna typ av beroende. Om beroendet däremot är en icke-inbyggd modul kan Webpack inte ladda den. Vissa av laddarna vet hur man laddar moduler med icke-native beroenden genom att stubba ut och exkludera den icke-native delen så att den kommer att laddas. I fs modul till exempel behöver du inte kunna läsa och skriva filer från disk eftersom webbläsaren inte kan göra det så du behöver inte inkludera den delen.

Detta väcker frågan:Vilken funktionalitet från mongoose-modulen behöver du i webbläsaren? Kan du inkludera just den funktionen och inte hela mongoose-modulen?

Om du kan göra detta kan du kanske lösa två problem:

  1. Du kanske löser paketeringsproblemet med Webpack eftersom den del av mongoose som du inkluderar i ditt projekt inte har problematiska underberoenden.
  2. Du kommer att skapa ett mindre paket med Webpack eftersom du bara kommer att inkludera de delar du behöver så att nyttolasten för bundle.js till klienten blir mycket mindre.

Som ett exempel behövde jag nyligen använda mongodb ObjectId-generatorn i klienten. Jag upptäckte att Webpack inte kunde hantera import mongodb from 'mongodb' komponent så att gräva i beroenden jag hittade att mongodb beror på mongodb-core vilket beror på bson som har ObjectId metod jag behövde.

Genom att endast importera bson komponenten i den beroendekedjan jag kom runt problemet med Webpack och gjorde mitt paket mycket mindre.

Om du använder Npm 3 så finns det en god chans att bson är installerat i roten av node_modules om du redan använder mongoose eller mongodb så att du kan import det utan att sätta en explicit referens till det i ditt package.json . Detta medför uppenbarligen risken att om det övre beroendet upphör beroende på det så kommer din build att gå sönder och du måste npm install det självständigt. Fördelen med att använda detta tillvägagångssätt är att du alltid kommer att använda samma version av bson som det övre beroendet använder vilket kan vara viktigt.




  1. MongoDB :var går gränsen mellan få och många?

  2. Finns det något sätt att sätta allt nollvärde på slutet när man sorterar med mongodb/mongoid?

  3. Nodejs mongodb vaknar inte på servern

  4. Hur man skapar en användare i MongoDB