MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nie znaleziono modułu:Błąd:nie można rozwiązać modułu 'module' mongodb podczas wiązania z pakietem internetowym

Kiedy Webpack pakuje twoje moduły, podąża za łańcuchem zależności modułu, który zaimportowałeś (lub wymagany) i ściąga wszystkie jego zależności, a także pakuje je aż do końca łańcucha.

Jeśli istnieje plik, którego nie potrafi załadować w tym łańcuchu zależności, zostanie zgłoszony ten rodzaj błędu.

Czasami można to rozwiązać, dodając program ładujący, który wie, jak załadować tego typu zależność. Jeśli jednak zależność jest modułem innym niż natywny, Webpack nie może go załadować. Niektóre programy ładujące wiedzą, jak załadować moduły z zależnościami innymi od natywnych, wyłączając i wyłączając część nienatywną, aby mogła się załadować. W fs na przykład nie musisz mieć możliwości odczytywania i zapisywania plików z dysku, ponieważ przeglądarka nie może tego zrobić, więc nie ma potrzeby dołączania tej części.

Rodzi to pytanie:jakiej funkcjonalności z modułu mangoose potrzebujesz w przeglądarce? Czy możesz uwzględnić tylko tę funkcję, a nie cały moduł mangusty?

Jeśli jesteś w stanie to zrobić, możesz rozwiązać 2 problemy:

  1. Możesz rozwiązać problem pakowania Webpack, ponieważ część mangusty, którą włączasz do swojego projektu, nie ma problematycznych zależności podrzędnych.
  2. Będziesz tworzyć mniejszy pakiet za pomocą Webpack, ponieważ będziesz uwzględniał tylko te części, których potrzebujesz, więc ładunek bundle.js do klienta będzie znacznie mniejszy.

Jako przykład ostatnio musiałem użyć generatora mongodb ObjectId w kliencie. Odkryłem, że Webpack nie był w stanie poradzić sobie z import mongodb from 'mongodb' komponent, więc zagłębiając się w zależności, odkryłem, że mongodb zależy od mongodb-core co zależy od bson który ma ObjectId metoda, której potrzebowałem.

Importując tylko bson składnik tego łańcucha zależności Obszedłem problem z pakietem Webpack i znacznie zmniejszyłem swój pakiet.

Jeśli używasz Npm 3, jest duża szansa, że ​​bson jest zainstalowany w katalogu głównym node_modules jeśli już używasz mangoose lub mongodb, więc możesz import go bez umieszczania wyraźnego odniesienia do niego w swoim package.json . To oczywiście niesie ze sobą ryzyko, że jeśli górna zależność przestanie zależeć od niej, twoja kompilacja się zepsuje i będziesz musiał npm install to niezależnie. Zaletą takiego podejścia jest to, że zawsze będziesz używać tej samej wersji bson że używa górnej zależności, co może być ważne.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — jak używać wielu grup w potoku agregacji?

  2. ABC NestJS:Przewodnik dla początkujących z MongoDB (Mongoose).

  3. Projektuj pierwszy element w tablicy do nowego pola (agregacja MongoDB)

  4. Jak usunąć dokumenty z wielu kolekcji na podstawie ID w MongoDB?

  5. Jak usunąć ciąg z tablicy w dokumencie mongodb?