NodeJS - jak sprawdzić czy moduł X jest dostępny
Ostatnio potrzebowałem kawałka kodu do sprawdzenia, czy moduł o jakiejś nazwie jest dostępny w projekcie NodeJS.
Chodziło akurat o mockowanie modułów przy pomocy biblioteki jest
w module pomocniczym, który możemy zaimportować do innego projektu, gdzie akurat może nie być części zależności.
W tym przypadku biblioteka mockuje zależność firebase
i firebase-admin
, podczas gdy u nas w projekcie używamy tylko firebase-admin
. A jest
rzuca wyjątek, bardzo słusznie zresztą, jeśli każemy mu zamockować moduł, którego nie może znaleźć.
Najlepszym rozwiązaniem, jakie znalazłem, było użycie funkcji require.resolve
.
Funkcja ta rozwiązuje ścieżkę do modułu, ale nie ładuje go niepotrzebnie, tylko zwraca do niego ścieżkę. Jeśli nie znajdzie modułu, to rzuca wyjątkiem. Można więc zrobić coś typu:
try {
require.resolve(moduleName);
// do something
} catch (e) {
// not found, console.info etc.
}