Github informuje mnie, że zależność w moim pliku package-lock.json jest podatna na atak i nieaktualna. Problem polega na tym, że jeśli robię npm install
lub npm update
żadna z nich zaktualizować zależność w pliku pakiet-lock.json.
Dużo googlowałem, a także usunąłem plik i gotowe npm install
.
Jeśli ktoś może pomóc rozwiązać ten problem, byłbym bardzo wdzięczny. Ten pakiet to Hoek, którego w rzeczywistości nie mam w pliku package.json.
Z góry bardzo dziękuję.
node.js
npm
package.json
package-lock.json
Raph117
źródło
źródło
Odpowiedzi:
Wygląda na to, że Hoek jest zależnością jednej z twoich zależności (więc pakiet, który masz w swoim package.json, wymaga tego z własnego pliku package.json).
Próbowałeś już usunąć / ponownie zainstalować i zaktualizować zależności projektu bez powodzenia, więc wydaje się, że dana zależność pakietu ma określoną jawną lub maksymalną wersję.
Bez zobaczenia pliku package.json dla każdej z zależności, byłoby trudno doradzić dalsze, jak wymusić aktualizację.
Edycja: aby pomóc Ci zidentyfikować, które pakiety używają jakich zależności, możesz użyć
ls
polecenia NPM : https://docs.npmjs.com/cli/lsNa przykład, aby zobaczyć, które pakiety używają Hoek:
npm ls hoek
Edycja 2: Jak poprawnie wskazuje Ulysse BN, jeśli masz NPM w wersji 6 lub nowszej, możesz
npm audit fix
poprosić NPM o próbę naprawy luk za Ciebie.Edycja 3: Ci, którzy to czytają, powinni również sprawdzić odpowiedź JBallina poniżej. Rozszerza informacje, które tu podałem i jest (moim zdaniem) bardziej uporządkowaną odpowiedzią, która lepiej odpowiada na pytanie OP. Jednak - jeśli chcesz szybkiego rozwiązania - ta odpowiedź powinna wystarczyć.
źródło
package.json
co zależy od konkretnej (podatnej na ataki) wersji Growl. Twoja odpowiedź jest na dobrej drodze i być może mógłbyś ją znaleźć, gdybyś udostępnił polecenie, które pokaże, który pakiet (y)package.json
zależy od tego, który zawiera lukipackage-lock.json
.TLDR: Zaktualizuj pakiet nadrzędny przy użyciu
npm i $PARENT_PKG_NAME
.Uwaga
Podczas aktualizowania zależności należy przejrzeć dziennik zmian pod kątem wszelkich istotnych zmian.
Diagnoza
npm audit
ujawni zarówno podatny pakiet (pamiętaj, że będziesz potrzebować do tego pliku package-lock.json, więc będziesz musiał uruchomićnpm i
), jak i pakiet, od którego jest zależny (jeśli dotyczy). Zauważ, że możesz również użyć,npm ls $CHILD_PKG_NAME
aby zobaczyć jego zależności nadrzędne.Próba szybkiej naprawy
npm audit fix
inpm audit fix --force
warto spróbować, ale czasami naprawa będzie musiała zostać wykonana ręcznie (patrz poniżej).Naprawa ręczna
Najprawdopodobniej pakiet nadrzędny już naprawił swoje zależności (możesz to sprawdzić, przechodząc do ich GitHub i przeglądając ostatnie zatwierdzenia - lub po prostu sprawdzając, czy to naprawia), więc możesz po prostu uruchomić
npm i $PARENT_PKG_NAME @$NEW_VERSION
i zaktualizować blokadę pakietu .json.Jeśli rodzic nie naprawił usterki
Jeśli opiekun wydaje się nie reagować, możesz rozważyć użycie alternatywnego pakietu, który osiąga to samo lub rozwidlenie pakietu i samodzielną aktualizację luki.
Zweryfikuj poprawkę
Możesz teraz sprawdzić, czy zadziałało, uruchamiając
npm audit
i upewniając się, że nie pojawiają się żadne luki. Zatwierdź zmiany, prześlij je do GitHub, odśwież powiadomienia / alerty i powinny zniknąć!źródło
Jeśli masz npm @ 6 lub nowszy, możesz użyć go
npm audit fix
ze względów bezpieczeństwa.źródło
Posługiwać się:
npm zainstaluje najnowszą wersję hoek, a plik package.lock.json zostanie zaktualizowany.
źródło
Miałem ten problem i stwierdziłem, że to dlatego, że serwer, na którym uruchomiłem npm, miał na nim starą wersję npm - package-lock.json jest obsługiwany tylko przez nowsze wersje.
źródło
czy próbowałeś tego: przejdź do katalogu głównego projektu, usuń plik
package-lock.json
pliknode_modules
i.cache
foldery, a następnienpm install
.źródło
Aby sprawdzić wrażliwe pakiety npm, użyj następujących poleceń:
Aby naprawić wrażliwe pakiety npm, po prostu użyj następujących poleceń, które naprawią również pakiet-lock.json:
źródło
Edytuj
package-lock.json
ręcznie i zaktualizuj podatną wersję pakietu do poprawionej, a następnie użyjSpowoduje to zainstalowanie pakietów zgodnie z najpierw
package-lock.json
ignorowaniempackage.json
. Następnie użyjponownie, aby mieć pewność, że zostało to prawidłowo wykonane. Jeśli to nie pomoże, zastosuj inne podane rozwiązania.
Więcej informacji tutaj:
https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
lub tutaj: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
źródło
Po zainstalowaniu nowych zależności uruchom następujące polecenie, aby zaktualizować plik package-lock.json:
źródło