Co oznacza błąd ELIFECYCLE Node.js?


211

Co oznacza ELIFECYCLE?

Oto mój kod aplikacji: https://gist.github.com/samholmes/388ca4552c5936b52c5d

Kiedy uruchomię polecenie „blast-e-mail”, będzie działać przez chwilę, aż na krótko zawiesi się z błędem:

npm ERR! Linux 3.2.0-4-amd64
npm ERR! argv "/root/.nvm/versions/io.js/v1.6.1/bin/iojs" "/root/.nvm/versions/io.js/v1.6.1/bin/npm" "run" "live"
npm ERR! node v1.6.1
npm ERR! npm  v2.7.1
npm ERR! code ELIFECYCLE
npm ERR! emailer@0.0.0 live: `NODE_ENV=production node app.js`
npm ERR! Exit status 137
npm ERR! 
npm ERR! Failed at the emailer@0.0.0 live script 'NODE_ENV=production node app.js'.
npm ERR! This is most likely a problem with the emailer package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     NODE_ENV=production node app.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls emailer
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /apps/emailer/npm-debug.log

npm-debug.logPlik jest również zawarte w GIST.

Szukam jednej z dwóch odpowiedzi: Co oznacza ELIFECYCLE? (lub) Dlaczego pojawia się błąd w kodzie aplikacji?


Właśnie otrzymałem ten sam błąd z procesu webpacka (nie uruchomił się ponownie przez kilka godzin, a ja wprowadziłem zmianę, która zepsuła kompilację webpacka). W przeciwnym razie nigdy wcześniej nie widziałem błędu, a ponowne uruchomienie procesu rozwiązało problem.
Ally

1
ps -ax | grep npm .. i zabij procesy npm zadziałały dla mnie
Buminda

Odpowiedzi:


62

Zasadniczo oznacza to, że nie odradza procesu nie z powodu pozwolenia, ale z powodu błędu w skrypcie. Źródło

Nie masz żadnych problemów z wykonaniem NODE_ENV=production node app.js?


Nie mam żadnych problemów z wykonaniem skryptu. W rzeczywistości działa dobrze. Ten błąd pojawia się tylko wtedy, gdy uruchamiam „blast-e-maile”, które wykonują pętlę async.eachSeries i wysyłają e-maile za pomocą nodemailer i transportu mandryli, które można zobaczyć w kodzie źródłowym. Czy może to być problem z nodemailer lub transportem?
Sam

W pliku emailer.js znajdują się odwołania do funkcji „błędu”, ale nie mogę jej znaleźć.
Pierre Inglebert,

która funkcja w emailer.js?
Sam


Funkcja błędu jest zdefiniowana poniżej w tym zakresie: gist.github.com/samholmes/388ca4552c5936b52c5d#file-app-js-L81
Sam

43

Można by pomyśleć, że dzieje się tak, ponieważ nieaktualne wersje npm i node, ale tak nie jest.

Tak jak mówi Pierre Inglebert, jeśli spojrzysz na źródło, zobaczysz, że End of lifecycleoznacza to, że program został nieoczekiwanie zatrzymany. Może to mieć różne przyczyny. Nie jest to więc błąd składniowy ani oczekiwany wyjątek / błąd.

Błąd pojawił się, gdy inne narzędzie już używało portu http (3000) zdefiniowanego w moich skryptach węzłów. Gdy uruchomisz aplikację węzła na porcie 80, upewnij się, że zatrzymałeś serwer Apache (na przykład).


2
Dla mnie ten sam port był używany przez inny program
prześledzić

Następnie możesz przejść do stackoverflow.com/questions/39632667/…
estellezg

1
W moim przypadku nie zauważyłem Error: listen EADDRINUSE :::3000ostrzeżenia
estellezg

1
Błąd jest naprawdę niejednoznaczny, jeśli używasz starej wersji węzła / npm, myślałem, że muszę zaktualizować, zamiast tego po prostu pobieranie nie powiodło się
Alex

13

Podczas pracy nad motywem WordPress otrzymałem ten sam ELIFECYCLEbłąd z nieco innym wyjściem:

npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/Cellar/node/7.6.0/bin/node" "/ usr / local / bin / npm" "install"
npm ERR! węzeł v7.6.0
npm ERR! npm v3.7.3
npm ERR! kod ELIFECYCLE
npm ERR! foundationsix@1.0.0 postinstall: `bower install && gulp build`
npm ERR! Wyjdź ze statusu 1
npm ERR! 
npm ERR! Błąd przy skrypcie postinstallix fundamentationsix@1.0.0 „bower install && gulp build”.
npm ERR! Upewnij się, że masz zainstalowaną najnowszą wersję node.js i npm.
npm ERR! Jeśli to zrobisz, najprawdopodobniej jest to problem z pakietem fundationsix,
npm ERR! nie z samym NPM.
npm ERR! Powiedz autorowi, że to nie działa w twoim systemie:
npm ERR! bower install && gulp build

Próbowałem npm installjeszcze raz z tym samym rezultatem bower install. Kiedy to się udało, próbowałem gulp buildi to też zadziałało.

Teraz wszystko działa dobrze. Nie mam pojęcia, dlaczego uruchamianie każdego polecenia działało osobno w przypadku &&niepowodzenia, ale może ktoś uzna tę odpowiedź za przydatną.


@Matthew Read - Jak sformatowałeś ten blok kodu? Jest to zdecydowana poprawa, ale nie jestem pewien, jak to zrobić sam ... Myślę, że użyłem 3 tyknięć wstecz, uderzyłem „enter” w nowym wierszu, a następnie mój kod (następnie „enter” i 3 tyknięcia wstecz aby zamknąć blok kodu), ale wydaje mi się, że to już nie działa. Wskaźniki?
adam-asdf

Jeśli klikniesz „edytuj X godzin / dni temu” nad moim imieniem, a następnie kliknij „źródło”, wyświetli się! Tylko wstępnie sformatowany tag tekstowy. Inną opcją byłoby wcięcie każdej linii o 4 spacje. Przepełnienie stosu nie obsługuje potrójnej składni, takiej jak GitHub / Slack / etc. - Twoje formatowanie zostało zinterpretowane jako trzy kolejne bloki z jednym kliknięciem, przy czym pierwszy i ostatni są całkowicie puste (dlatego pierwsza linia została bardzo nieznacznie wcięta, a ostatnia linia zawierała odrobinę podświetlonego miejsca na końcu) .
Mateusz

W moim przypadku zapomniałem uruchomić npm install(jestem nowy w node.js). Twoja odpowiedź poprowadziła mnie we właściwym kierunku. Dzięki.
Kon

13

W moim przypadku było to spowodowane brakiem pamięci RAM, kiedy biblioteka kompresji zdjęć nie była w stanie przetworzyć większych zdjęć.


1
Mam ten sam problem, to z powodu braku pamięci.
Envil,

2
Podobnie! Wygląda na to, że ELIFECYCLE errno 137 może być również spowodowany brakiem pamięci. W moim przypadku mój serwer miał 1 GB pamięci RAM. Zaktualizowałem go do 2 Gb, a moja kompilacja przeszła pomyślnie.
Firze

1
Podbiegłem npm run watchdo Dockera i dostałem błąd z pytania. Kiedy zwiększyłem limit pamięci i procesora dokera, problem zniknął.
Paul Basenko

5

Jeśli przyszedłeś tutaj tak jak ja, po otrzymaniu podobnego błędu podczas wypróbowywania przewodnika React Pierwsze kroki , możesz chcieć wiedzieć, że przyczyną problemu mógł być brak instalacji Watchmana. Pobierz go tutaj lub zainstaluj z Homebrew za pomocą brew install watchmani spróbuj ponownie: https://facebook.github.io/watchman/docs/install.html

PS: Może chcesz zrobić brew updatepierwszy.


Dzięki ... próbując nauczyć się, jak zbudować czyjąś reakcję. Rodzime sprawdzanie na githubie było brutalne. Tyle niedokładnie udokumentowanych kroków konfiguracji!
Dronz

1
@Dronz Tak, najwyraźniej .. Nie wiem dlaczego.
Magne

1
@Dronz Nie jestem pewien. Potrzebowałem tego na komputerze Mac.
Magne,

1
Dzięki. Wydaje się, że nie jest potrzebny w systemie Windows.
Dronz

1
Konfigurowałem wstępnie zbudowany szablon w WordPressie, aby odebrać z zespołem programistów, dostałem ten sam błąd i zmiana linii cwd: parseInt(process.versions.node) < 8 ? process.cwd : process.cwd()pomijała błąd, ale wygenerowałam inny ... brew updatedziałał dla mnie.
shimanyi


4
at process._tickCallback (wewnętrzny / process / next_tick.js: 10
4: 9)
npm ERR! kod ELIFECYCLE
npm ERR! errno 1
npm ERR! ng-contact-manager@0.0.0 przykład: `node src / server / dat
a / seed-db.js`
npm ERR! Wyjdź ze statusu 1
npm ERR!
npm ERR! Błąd podczas przykładowego skryptu ng-contact-manager@0.0.0.
npm ERR! Prawdopodobnie nie jest to problem z npm. Jest jak
dodatkowe dane rejestrowania powyżej.

npm ERR! Pełny dziennik tego uruchomienia można znaleźć w:

Mam ten sam problem, jak w końcu udało mi się rozwiązać! błąd: mój błąd z terminala, gdy uruchamiam npm run sample po skorygowaniu nazwy użytkownika i hasła połączenia z bazą danych Korzystałem z mlab dla mojej bazy danych i pod plikiem .env zapomniałem poprawnie wpisać nazwę użytkownika i hasło. Kiedy poprawiam, że działam.

> ng-contact-manager@0.0.0 sample /Users/mohammedr.kemal/Downl
oads / Ex_Files_ANGULAR_API_AUTH / Pliki ćwiczeń / Ch01 / 01_04 / start
> węzeł src / server / data / seed-db.js

podłączony do mongodb ...
podłączony do mongodb ...
Wstawiono 2 rekordy.
zamykanie połączenia ...
Gotowe.
Dodano 12 rekordów.
zamykanie połączenia ...
Gotowe.

Więc może warto sprawdzić każde połączenie danych, które nawiązaliśmy w naszym kodzie, jeśli tak jest.


3

Miałem ten sam błąd po zainstalowaniu nowych pakietów lub ich aktualizacji:

...
npm ERR! code ELIFECYCLE
npm ERR! errno 1
...

Pomogło mi to uruchomić polecenie instalacji jeszcze raz lub kilka razy. Następnie błąd zniknął.


2

Miałem ten problem, kiedy prowadziłem dwa projekty, które miały taką samą konfigurację i już miałem jeden uruchomiony. Oznaczało to, że inny projekt nie mógł użyć tego numeru portu. Gdy tylko zatrzymałem kolejny projekt, nie miałem problemów.


1

W moim przypadku był to problem z uprawnieniami w Linuksie, zamiast pisania:

npm run start

Próbowałem:

sudo npm run start

Następnie wpisz hasło użytkownika sudo i możesz zacząć!


1

Rozwiązanie Windows jest takie samo jak odpowiedź sudo na Linux. Uruchom npm start (lub cokolwiek) jako Administrator. Dodałem nowy moduł do mojego projektu. Pracował na niektórych komputerach, ale na innych, które były bardziej zamknięte, nie tyle. Zajęło to trochę czasu, aby to rozgryźć, ale nowy moduł potrzebował dostępu do „czegoś”, co nie było dostępne bez uprawnień administratora.


0

Miałem ten sam kod błędu, gdy uruchomiłem kompilację uruchamiania npm w kontenerze dokera węzła.

Lokalnie działało, gdy był w kontenerze. Ustawiłem opcję zgłaszania błędu, gdy podczas kompilacji pojawia się ostrzeżenie, a lokalnie nie zostało ustawione. Ten błąd może więc oznaczać wszystko, co jest związane z zatrzymaniem procesu wykonywanego przez NPM


0

W moim przypadku wygenerowałem podobny błąd, gdy skopiowałem projekt z innego katalogu. brakowało niektórych ukrytych plików, takich jak krytyczny plik .babelrc. SO ahhh ... upewnij się, że skopiowałeś wszystkie pliki! :)


0

Ten problem może również wystąpić, gdy ściągniesz kod z git i jeszcze nie zainstalowałeś modułów węzła „npm install”.


0

Dla mnie było to potrójne stwierdzenie:

W szczególności narzekał na tę linię, na średnik:

let num_coin = val.num_coin ? val.num_coin || 2;

Zmieniłem to na:

let num_coin = val.num_coin || 2;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.