2017-06-27 13 views
13

Kiedy uruchamiam mój serwer z node app.js w linii poleceń (używając Git Bash), mogę go zatrzymać za pomocą ctrl + C.Węzeł JS ctrl + C nie zatrzymuje serwera (po uruchomieniu serwera z "npm start")

W moim pliku package.json mam to uruchomienie skryptu, który pozwala mi użyć polecenia npm start aby uruchomić serwer:

"scripts": { 
    "start": "node app" 
}, 

Kiedy to zrobić, serwer zacznie normalnie:

$ npm start 

> [email protected] start C:\Projects\nodekb 
> node app.js 

Server started on port 3000... 

Ale gdy teraz ctrl + C, serwer nie zostaje zatrzymany (proces węzła nadal pozostaje w menedżerze zadań). Oznacza to, że pojawia się błąd, gdy próbuję ponownie wykonać npm start, ponieważ port 3000 jest nadal używany.

Podążam za tutorialem na youtube (video with timestamp), a kiedy ten facet ctrl + C znowu uruchamia npm start, to działa normalnie.

Jakieś pomysły, dlaczego mój proces serwera nie jest zatrzymany, gdy używam ctrl + C? złożyć

Moi app.js razie potrzeby:

var express = require("express"); 
var path = require("path"); 

//Init app 
var app = express(); 

//Load View Engine 
app.set("views", path.join(__dirname, "views")); 
app.set("view engine", "pug"); 

//Home Route 
app.get("/", function(req, res) { 
    res.render("index", { 
    title: "Hello" 
    }); 
}); 

//Add route 
app.get("/articles/add", function (req, res) { 
    res.render("add_article", { 
    title: "Add Article" 
    }); 
}); 

//Start server 
app.listen(3000, function() { 
    console.log("Server started on port 3000..."); 
}); 

Dzięki!

+2

Jakiego rodzaju terminala używasz? Czy próbowałeś bash w systemie Windows? Czy czekałeś na chwilę? Pamiętam, że węzeł na komputerach z systemem Windows jest dość wolny. – lumio

+3

To jest problem z bash dla Windows i jest sporo problemów na GitHubie wokół niego [Like] (https://github.com/cbucher/console/issues/273) – Shivam

+0

Próbowałem go na normalnym windowsie cmd, i działało tak, jak powinno. Wygląda na to, że to problem z grą git. Dzięki za pomoc! – Mat

Odpowiedz

0

To jest najprawdopodobniej tylko problem z konsolą, niepoprawnie wysyłający polecenie do procesu. Jest to dość powszechne, szczególnie w przypadku korzystania z konsol trzecich, takich jak cmdr/conemu.

Rozwiązanie?

Wystarczy nacisnąć Ctrl + C kilka razy, aż zamknie się: P

+0

Naprawdę wypróbowałem to, i to nie działało :( – pailhead

0

Czasami zawiesza proces węzeł. Sprawdź identyfikator procesu z wykorzystaniem ps Możesz grep dla węzła, a następnie zabić proces przy użyciu kill -9 [PID]

7

próbowałem go na normalnych okien cmd, i to działało tak jak powinno tam. Wygląda na to, że to problem z grą git.

+1

To właśnie zaczęło się dziać do mnie 1 miesiąc temu lub tak, nie wiem dlaczego i jest ze wszystkimi klientami Basha dla Windows (próbowałem wielu). Działa w wygranej cmd, dziwnie tyle prac w git bash dla moich kolegów ... – tibbus

+0

To rzeczywiście wydaje się być problemem z węzłem i Git Bash w Windows. Byłoby miło, gdyby problem był gdzieś śledzony. Nie jestem pewien, czy jest to problem z węzłem, czy Wydanie git for windows – vossad01

+0

Używanie CMD, PS lub Git Bash daje mi ten sam problem –

1

Używam git bash na moim komputerze z systemem Windows i napotkałem ten problem w ciągu ostatniego miesiąca.

Nadal nie wiem, co jest przyczyną, ale znalazłem inny sposób, aby to zatrzymać.

  1. Otwarte Task Manager
  2. iść do Procesów zakładka
  3. Look dla node.exe a następnie nacisnąć Zakończ proces

To pozwoliło mi przestać serwer szybko.

1

Miałem ten sam problem z pracą z npm. Ale w końcu wiedziałem, że to problem z samym Gitem.

Pojawił się komentarz: dscho na GitHub 15 dni temu. Powiedział, że pracują nad rozwiązaniem tego problemu w następnej wersji. Podał również dokładny plik msys-2.0.dll, który może rozwiązać problem osób, które nie mogą czekać.

Osobiście nie mogłem czekać: str. Tak więc spróbowałem, pobrałem plik i wrzuciłem go do folderu git, jak powiedział. I problem zniknął! To było niesamowite!

Należy jednak wykonać kopię zapasową przed zastąpieniem pliku.

Próbowałem również zabić go po uruchomieniu express jak kiedyś; przy użyciu taskkill /im node.exe na cmd, ale nie było procesu, który można znaleźć.

Sprawdź ten numer na GitHub i wyszukaj nazwę pliku msys-2.0.dll, aby uzyskać szybki dostęp do komentarza.

0

byłem w stanie debugować ten problem poprzez sprawdzenie portów za pomocą TCP View i zdając sobie sprawę, że mój serwer Węzeł biegł choć miałem wciśnięty CTRL-C, aby go powstrzymać. Sugeruję zabicie terminalu, z którego uruchamiasz węzeł, całkowicie.

Powiązane problemy