npm błąd instalacji: rollbackFailedOptional

82

Kiedy próbuję npm installnowych pakietów, pokazuje mi ten błąd:

rollbackFailedOptional: czasownik npm-session 585aaecfe5f9a82

node --version
8.4.0

npm --version
5.3.0
Bipul Prasai
źródło
1
Otrzymuję również ten sam błąd. czy znalazłeś na to jakieś rozwiązanie?
Anil
Najprawdopodobniej jest to spowodowane zaporą sieciową Twojej firmy. Użyj niefirmowego połączenia internetowego lub spróbuj ustawić serwer proxy dostarczony przez administratora firmy, aby uzyskać dostęp do serwera repozytoriów NPM.
Prometheus

Odpowiedzi:

90
    # first this
    > npm config rm proxy
    > npm config rm https-proxy

    # then this
    > npm config set registry https://registry.npmjs.org/

rozwiązał mój problem.

Ponownie: sprawdź, czy masz prawidłowo podłączony internet.

anvarik
źródło
3
Wyjaśnij te informacje, dla mnie też nie zadziałało.
Jorgesys
2
dla mnie trzeba użyć https://registry.npmjs.org/(zwróć uwagę na https)
Walty Yeung
1
ratujesz
to niestety nie rozwiązało mojego problemu. Jestem po prostu w prostej sieci domowej, bez serwera proxy, mam ten błąd z włączaniem i wyłączaniem przez długi czas, czasami, gdy używam kodu VS, mogę otworzyć monit cmd (inny niż kod VS) i działa, ale nie w IDE. Właśnie odinstalowałem NodeJS, usunąłem wszystkie foldery npm w AppData, przeinstalowałem i nadal mam ten błąd.
Luke T O'Brien
56

Spróbuj tego

npm config rm proxy
npm config rm https-proxy
cwtuan
źródło
3
Ja też pracowałem dla mnie, ale czy wiesz, co zrobiło to polecenie i dlaczego zadziałało? Zastanawiam się, czy zamiast tego muszę coś zainstalować. Dzięki!
aztec242
1
Powodem, dla którego to pomaga, jest to, że w jakiś sposób ustawienia rejestru zostały ustawione na coś innego niż domyślne, a te polecenia usuwają te ustawienia konfiguracyjne, umożliwiając im przywrócenie wartości domyślnych. W moim przypadku moja praca wykorzystuje niestandardowy rejestr, który został niedawno umieszczony za zaporą ogniową. Pracuję nad osobistym projektem w domu, więc nadpisuję ustawienia npm dla tego projektu specjalnie w tym katalogu. Zobacz odpowiedź @ lambda poniżej, aby uzyskać więcej informacji.
Andy Groff
Działa dobrze. Po wypróbowaniu rollBackFailed ... pojawił się ponownie, ale po kilku sekundach zniknął. Z łatwością zainstalowałem z nim język ojczysty. Dziękuję
Md Ashraful Islam
2
U mnie to nie zadziałało, dopóki nie pobiegłemnpm config set registry http://registry.npmjs.org/
Davis
Dla mnie to samo co @davis
kayleeFrye_onDeck,
20

W moim przypadku musiałem edytować .npmrcbezpośrednio i ręcznie dodać ustawienia proxy.

proxy=http://yourorganizationproxy.com:8080
https-proxy=http://yourorganizationproxy.com:8080

Mam nadzieję, że to komuś pomoże.

miqrc
źródło
Dziękuję bardzo! W moim przypadku (Kubuntu) ustawienia zostały jakoś dodane do pliku użytkownika .npmrc pod~/.npmrc
a1300
1
Przykro mi, że gdy npm nie może dotrzeć do rejestru, zachowanie polega na zawieszeniu się z tajemniczym komunikatem o stanie i bez znaku, że próbuje dotrzeć do zdalnego hosta. Dobrze wychowane narzędzia wiersza poleceń powinny informować użytkowników, kiedy robią rzeczy w Internecie
Matt Montag,
Gdzie mogę znaleźć ustawienia proxy? @miqrc
Akhila
Musiałem zmienić klucz na „https_proxy”, aby działał, używając npm w wersji 6.13.4
JamesP
18

Przyczyną może być Twój aktualny rejestr NPM . Spróbuj poszukać .npmrcpliku . Mogą to być różne lokalizacje:

  • plik konfiguracyjny dla projektu ( /path/to/my/project/.npmrc)
  • plik konfiguracyjny dla użytkownika ( ~/.npmrc)
  • globalny plik konfiguracyjny ( $PREFIX/etc/npmrc)
  • wbudowany plik konfiguracyjny npm ( /path/to/npm/npmrc)

W tych może być coś takiego

registry=https://mycustomregistry.example.org

który będzie miał wyższy priorytet niż domyślny ( http://registry.npmjs.org/). Możesz usunąć ten wiersz z pliku lub użyć domyślnego rejestru w następujący sposób:

npm <command> --registry http://registry.npmjs.org/
lambda
źródło
2
bieganie npm config set registry http://registry.npmjs.org/działało dla mnie po skonfigurowaniu ustawień proxy
rainversion_3
16

Najprawdopodobniej rejestr npm nie jest dostępny przez npm. Sprawdź konfigurację serwera proxy npm

Dokładnie ten sam problem miałem w systemie Windows Server 2008 R2. Początkowo podejrzewałem konfigurację zwiększonych zabezpieczeń Internet Explorera, ale po wyłączeniu tego bez powodzenia okazało się, że problem polegał na tym, że npm nie był skonfigurowany do korzystania z mojego korporacyjnego połączenia proxy z Internetem.

Okazuje się, że npm nie korzysta z ustawień proxy obowiązujących poprzez Opcje internetowe> zakładka Połączenia> Ustawienia sieci LAN, gdzie serwer jest ustawiony na „Automatycznie wykryj ustawienia”. Ustawienie automatycznego wykrywania ustawień nie gwarantuje, że serwer proxy jest rzeczywiście używany, oznacza po prostu, że system Windows automatycznie skonfiguruje ustawienia serwera proxy dla programu Internet Explorer, jeśli znajdzie specjalny plik „wpad.dat” pod adresem http: // wpad. [Twoja_domena .com] /wpad.dat .

Możesz sprawdzić, czy plik wpad.dat jest używany w Twojej organizacji, wpisując następujące polecenie w przeglądarce internetowej.

http://wpad.[yourcompany.domain]/wpad.dat

Jeśli żaden plik nie jest dostępny, prawdopodobnie nie używasz serwera proxy obejmującego całą organizację. Jeśli ktoś wróci do przeglądarki, to ...

Na końcu tego pliku powinieneś zobaczyć wiersz z napisem

PROXY <host:port>;

Może się to powtórzyć, jeśli masz dostępnych wiele serwerów proxy. Host i port są potrzebne, aby npm używał ustawień proxy w następujący sposób:

npm config set proxy http://[host]:[port]

i

npm config set https-proxy http://[host]:[port]

Na przykład, jeśli serwer proxy znajduje się pod adresem my.proxy.com na porcie 8080, polecenia npm wyglądałyby następująco:

npm config set proxy http://my.proxy.com:8080
npm config set https-proxy http://my.proxy.com:8080

Kiedy już powiedziałem npm, którego proxy ma używać, wszystko zaczęło działać, mogłem bez problemu uruchomić polecenia instalacyjne.

Dzięki poniższym poście o pomoc w odkryciu plików wpad.

AnotherLongUsername
źródło
6

Próbowałem następujących opcji, aby rozwiązać ten problem i zadziałało.

  1. Odinstaluj Node.js w wersji 8.
  2. Zainstaluj Node.js w wersji 6.11.4
  3. Użyj opcji rejestru wraz z poleceniem, aby zainstalować dowolny pakiet.

Na przykład, aby zainstalować express, użyłem następującego polecenia.

npm install express --registry http://registry.npmjs.org/

lub

npm install express -g --registry http://registry.npmjs.org/

Jeśli chcesz zainstalować lokalnie w dowolnym określonym folderze, użyj poniższego polecenia. Poniższe polecenie zainstaluje express na ścieżce C:\Sample\Example1.

C:\Sample1\Example1> npm install /Sample/Example1 express --registry http://registry.npmjs.org/

Uwaga: Jeśli instalujesz lokalnie w określonej lokalizacji, najpierw przejdź do tego katalogu za pomocą polecenia, a następnie uruchom powyższe polecenie. Jeśli nie jesteś w tym katalogu i podasz w poleceniu tylko ścieżkę, która nie zadziała.

Jeśli pojawi się package.jsonbrakujący błąd, uruchom poniższe polecenie przed lokalną instalacją pakietu

C:\Sample\Example1> npm init

powyższe polecenie utworzy package.json plik. Nie ma potrzeby podawania żadnych danych. po prostu naciśnij enter.

Uwaga: jeśli znajdujesz się za zaporą, może być konieczne skonfigurowanie serwera proxy.

Indygowiec
źródło
3

Cześć, jestem nowy w reagowaniu i napotkałem ten problem po wielu problemach, które znalazłem rozwiązanie: Po prostu uruchom w wierszu poleceń lub terminalu:

npm config set registry http://registry.npmjs.org/

To rozwiąże Twój problem. Link referencyjny: http://blog.csdn.net/zhalcie2011/article/details/78726679

Programista Rails
źródło
2
Link do rozwiązania jest mile widziany, ale upewnij się, że Twoja odpowiedź jest przydatna bez niego: dodaj kontekst wokół linku, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego się tam znajduje, a następnie zacytuj najbardziej odpowiednią część strony, którą podałeś. ponowne łącze w przypadku, gdy strona docelowa jest niedostępna. Odpowiedzi, które są niewiele więcej niż linkiem, mogą zostać usunięte.
GrumpyCrouton
3

Upewnij się, że masz dostęp do repozytorium firmowego skonfigurowanego w npm, sprawdź połączenie VPN.

W przeciwnym razie zresetuj go z powrotem do domyślnego repozytorium, jak poniżej.

npm config set registry http://registry.npmjs.org/

Powodzenia!!

Rudra
źródło
3

Następujące polecenia rozwiązały mój problem:

npm config set proxy http://yourproxyurl.com:8080  (you need to enter your or your company proxy URL and 8080 should be replaced by your proxy port)

npm config set https-proxy http://yourproxyurl.com:8080
Brooklynn99
źródło
1

Jeśli masz dostęp do rejestru, ale błąd nadal występuje, nic z powyższego nie zadziała. Zauważyłem, że ten problem dotyczy tylko instalacji projektu lokalnego (tj. Jeśli używasz -g do instalacji globalnej, wszystko działa dobrze).

Co rozwiązało problem: po prostu usuń wpis dotyczący pakietu, który zamierzasz zainstalować, z pliku package.json projektu. Po tym następnym wywołaniu npm zadziała i pomyślnie zainstaluje pakiet.

Alex Evseenko
źródło
1

Miałem ten sam efekt, tworząc aplikację Reaguj w PhpStorm. A na końcu po prostu mówi done. Uruchomienie tego samego polecenia w terminalu dało mi szczegółowe błędy. Utworzony przeze mnie folder projektu został nazwanyreact co wydaje się nie do przejścia.

Upewnij się, że folder projektu nie ma nazwy react.

Markus Zeller
źródło
0

Spróbuj tego:

usuń cały plik w folderze:% APPDATA% \ npm-cache \ _locks

Furetto
źródło
0

W systemie Windows: ponownie uruchom instalator i wybierz opcję „Napraw” instalację

Pracował dla mnie

lokeshrmitra
źródło
0

Wygląda na to, że ten błąd nie został jeszcze naprawiony [1]. Niektórzy ludzie pracują, inni nie. Ja też nie pracuję.

Próbowałem wyczyścić pamięć podręczną za pomocą polecenia: npm cache verifynastępnie ponownie uruchom polecenie instalacji. Pracowałem.

[1]. https://github.com/npm/npm/issues/17246

NgaNguyenDuy
źródło
0

Miałem ten sam problem. Ale może działać poprawnie po przełączeniu z sieci wewnętrznej firmy do sieci gości.

Wspinacz
źródło
0

Ustawiłem dwie systemowe zmienne środowiskowe -

  1. HTTP_PROXY = <_proxy_url_>
  2. HTTPS_PROXY = <_proxy_url_>

To faktycznie zadziałało dla mnie.

HS Raju
źródło
0

W rzadszych przypadkach sprawdź, czy projekt można zbudować za pomocą zwykłych npmpoleceń. Wpadłem na taki, który jest skonfigurowany do pracy bower, więc bower install <github_url>działa, podczas gdy npm install <github_url>daje ten nieprzydatny tajemniczy komunikat o błędzie na wszystkich platformach ...

prusswan
źródło
0

Podczas instalacji narzędzia wiersza poleceń Angular (CLI), jeśli otrzymujesz błąd wycofywania zmian, może to być spowodowane tym, że Twoja sieć jest połączona z siecią kliencką lub siecią firmową, nad którą pracujesz.

Więc spróbuj zainstalować CLI w sieci publicznej (lub w sieci hotspot Twojego telefonu komórkowego), a na pewno zainstalujesz CLI.

Amit Kumar
źródło
0

Rozwiązanie : domyślną wartością klucza „proxy” i „https-proxy” konfiguracji npm jest NULL. Po wykonaniu kilku dalszych prac badawczo-rozwojowych próbowałem ustawić wartość ustawienia proxy na powyższy klucz (to rozwiązanie działa w moim scenariuszu).

Te same ustawienia proxy muszą być również zastosowane w przeglądarce IE Ustawienia internetowe >> Ustawienia >> Ustawienia sieci LAN.

Wniosek : W firmowych / niektórych środowiskach proxy jest nieco obowiązkowym ustawieniem, w przeciwnym razie instalacja npm nie zadziała.

Problem na GitHub: https://github.com/SharePoint/sp-dev-docs/issues/3266

Szczegółowe informacje można znaleźć na blogu https://blogs2share.blogspot.com/2019/01/spfx-environment-setup-error.html

Vikas Bansal
źródło
0

Możesz rozwiązać ten problem, sprawdzając, czy w Twojej sieci są jakiekolwiek serwery proxy, co oznacza, że ​​proces pobierania jest zabroniony. Sieć mojej firmy miała włączoną zaporę ogniową, co było przyczyną problemu. Musiałem więc przełączyć się na niezabezpieczoną sieć (prawdopodobnie hotspot z twojej sieci komórkowej) i to zadziałało.

Nikhil Kumar
źródło
0

Mój był spowodowany zaporą sieciową McAfee. Jest ustawiony na tryb Pytaj, więc powinien pojawić się monit z pytaniem o połączenie internetowe, ale tak się nie stało! Wejście do McAfee i (tymczasowo!) Wyłączenie zapory pozwoliło mi na instalację.

antonye
źródło
0

Miałem już ustawione proxy jak opisano powyżej i działa to do dziś. Potem okazało się, że teraz potrzebuję „http: //” przed moim adresem proxy: „http: // {proxyURL}: {proxyPort}”. Wtedy w końcu zadziałało.

Liebster Kamerad
źródło
0

Zmagałem się z tym problemem przez jakiś czas, zanim się zorientowałem.
Używam High Sierra (10.13.6)
odinstalowaniu i ponownym zainstalowaniu węzła i NVM wielokrotnie - za pomocą installer.pkg, HomeBrewa następnie za pomocą wiersza poleceń. IMO, wiersz poleceń działa najlepiej.

Wykonałem następujące kroki:
1. Uruchomiłem npm config ls -l
2. Sprawdziłem, czy wartość globalconfigto $<installpath>/.nvm/versions/node/v12.16.3/etc/npmrcAle kiedy próbowałem dostać się do tej ścieżki w terminalu, dało mi to. No such file or directory
Więc
3. utworzyłem folder etc, utworzyłem npmrcplik i dodałem do niego tę linię.

registry = "https://registry.npmjs.org/"


Nie mam ~/.npmrcpliku w folderze$HOME

Następnie
4. Ponownie uruchomiłem npm installpolecenie.


Zauważ, że to nadal spowodowało rollbackFailedOptional: verb npm-sessionbłąd, ale tym razem zakończyło się , chociaż z innym błędem. Możesz wypróbować te kroki i sprawdzić, czy to działa.

Dla tych, którzy są ciekawi, wyrzuciłem Response timeout while trying to fetch https://registry.npmjs.org/<package> (over 30000ms)błąd, więc dodałem timeout = "60000"do /etc/npmrcpliku (jak znaleziono w innym wątku Stackoverflow) i spróbowałem ponownie. To zadziałało dla mnie.

Mam nadzieję że to pomoże!

Soumitra
źródło
0

Wypróbuj to wszystko polecenie, na które odpowiedziano tutaj, aby rozwiązać problem https://stackoverflow.com/a/54173142/12142401, jeśli problem będzie się powtarzał Wykonaj następujące kroki

Całkowicie odinstaluj nodejs checkout tę odpowiedź, aby całkowicie odinstalować nodejs https://stackoverflow.com/a/20711410/12142401

Pobierz zaktualizowaną konfigurację nodejs z ich strony internetowej Zainstaluj ją na dowolnym dysku, ale nie na wcześniej zainstalowanym dysku, tak jak na dysku C, a następnie zainstaluj na dysku D, S, G Uruchom polecenie npm, będzie działać poprawnie

user12142401
źródło
-2

Spróbuj tego. U mnie to zadziałało

npm install / your_floder_location nazwa_pakietu --registry http://registry.npmjs.org/

Poniżej znajduje się dokładne polecenie dla mnie do instalacji pakietu vue-router w moim projekcie laravel (nazwa mojego projektu vue_laravel)

aslam004: vue_laravel $ npm install / var / www / html / projects / vue_laravel vue-router - rejestracja http://registry.npmjs.org/

Powodzenia

Aslam Ansari
źródło
-3

użyj sudo przed poleceniem jako


sudo npm install

Ankit Gaur
źródło