sql >> Database teknologi >  >> NoSQL >> MongoDB

Modul ikke fundet:Fejl:Kan ikke løse modul 'modul' mongodb under bundling med webpack

Når Webpack samler dine moduler, følger det afhængighedskæden for det modul, du har importeret (eller krævet), og trækker alle dets afhængigheder ind og bundter dem også helt ned til slutningen af ​​kæden.

Hvis der er en fil, som den ikke ved, hvordan den skal indlæses i den afhængighedskæde, vil denne type fejl blive kastet.

Dette kan nogle gange løses ved at tilføje en loader, der ved, hvordan man indlæser denne type afhængighed. Hvis afhængigheden derimod er et ikke-native modul, kan Webpack ikke indlæse det. Nogle af indlæserne ved, hvordan man indlæser moduler med ikke-native afhængigheder ved at udstøde og ekskludere den ikke-native del, så den indlæses. I fs modul for eksempel behøver du ikke at kunne læse og skrive filer fra disk, fordi browseren ikke kan gøre det, så det er ikke nødvendigt at inkludere den del.

Dette rejser spørgsmålet:Hvilken funktionalitet fra mongoose-modulet har du brug for i browseren? Kan du inkludere netop den funktionalitet og ikke hele mongoose-modulet?

Hvis du er i stand til at gøre dette, kan du muligvis løse 2 problemer:

  1. Du løser muligvis Webpack-bundtproblemet, fordi den del af mongoose, som du medtager i dit projekt, ikke har problematiske underafhængigheder.
  2. Du vil oprette en mindre bundt med Webpack, fordi du kun vil inkludere de dele, du har brug for, så bundle.js nyttelasten til klienten bliver meget mindre.

Som et eksempel havde jeg for nylig brug for at bruge mongodb ObjectId-generatoren i klienten. Jeg opdagede, at Webpack ikke var i stand til at klare import mongodb from 'mongodb' komponent, så ved at grave i afhængighederne fandt jeg den mongodb afhænger af mongodb-core hvilket afhænger af bson som har ObjectId metode, jeg havde brug for.

Ved kun at importere bson komponent af den afhængighedskæde kom jeg uden om Webpack-problemet og gjorde mit bundt meget mindre.

Hvis du bruger Npm 3, så er der en god chance for, at bson er installeret i roden af ​​node_modules hvis du allerede bruger mongoose eller mongodb, så du kan import det uden at sætte en eksplicit reference til det i din package.json . Dette indebærer naturligvis risikoen for, at hvis den øvre afhængighed stopper afhængigt af det, vil din build bryde, og du bliver nødt til at npm install det selvstændigt. Fordelen ved at bruge denne tilgang er, at du altid vil bruge den samme version af bson som den øvre afhængighed bruger, hvilket kan være vigtigt.




  1. Mongo DB relationer mellem objekter

  2. Mongodb x.509 'Intet verificeret emnenavn tilgængeligt fra klient'

  3. Flytter MongoDBs datamappe?

  4. NoSQL (MongoDB) vs Lucene (eller Solr) som din database