Node JS ctrl + C не останавливает сервер (после запуска сервера с запуском npm)

Когда я запускаю свой сервер с node app.js в командной строке (используя Git Bash), я могу остановить его с помощью ctrl + C.

В моем файле package.json я получил этот start- script, который позволяет мне использовать команду npm start для запуска сервера:

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

Когда я это делаю, сервер запускается как обычно:

$ npm start

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

Server started on port 3000...

Но когда я ctrl + C теперь, сервер не останавливается (процесс node остается в диспетчере задач). Это означает, что я получаю сообщение об ошибке при попытке сделать npm start снова, потому что порт 3000 все еще используется.

Я следую учебнику по youtube (видео с меткой времени), и когда этот парень ctrl + C, а затем снова запускает npm start, он работает нормально.

Любые идеи, почему мой серверный процесс не остановлен, когда я использую ctrl + C?

Мой файл app.js при необходимости:

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...");
});

Спасибо!

Ответ 1

Я пробовал его на обычных окнах cmd, и он работал так, как должен. Похож на проблему с git bash.

Ответ 2

У меня была такая же проблема с npm. Но, наконец, я знал, что это проблема с самой git.

В GitHub 15 дней назад был комментарий от dscho. Он сказал, что они работают над устранением этой проблемы в следующем выпуске. Он также поделился точным msys-2.0.dll файлом, который может решить проблему для людей, которые не могут ждать.

Лично я не мог дождаться: p. Итак, я попробовал, загрузил файл и бросил его в папку git, как он сказал. И проблема ушла! Это было потрясающе!

Но перед заменой файла обязательно сделайте резервную копию.

Я также попытался убить его после запуска express, как я привык; используя taskkill /im node.exe в cmd, но не было никакого процесса.

Просмотрите эту проблему на GitHub и найдите имя файла msys-2.0.dll, чтобы быстрее перейти к комментарию.

Ответ 3

Это более чем вероятно, просто проблема с вашей консолью, которая не точно отправляет команду процессу. Это довольно часто, особенно при использовании сторонних консолей, таких как cmdr/conemu.

Решение?

Просто нажмите ctrl + c несколько раз, пока не закроется: P

Ответ 4

Иногда зависает процесс node.  Проверьте идентификатор процесса с помощью ps Вы можете использовать grep для node, а затем убить процесс, используя kill -9 [PID]

Ответ 5

Я использую git bash на моей машине Windows и столкнулся с этой проблемой за последний месяц или около того.

Я до сих пор не знаю, что вызывает его, но я нашел другой способ его остановить.

  • Откройте Диспетчер задач
  • Перейдите на вкладку Процессы.
  • Найдите node.exe, а затем нажмите Завершить процесс

Это позволило мне быстро остановить сервер.