Ответ 1
Я пробовал его на обычных окнах cmd, и он работал так, как должен. Похож на проблему с git bash.
Когда я запускаю свой сервер с 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...");
});
Спасибо!
Я пробовал его на обычных окнах cmd, и он работал так, как должен. Похож на проблему с git bash.
У меня была такая же проблема с npm
. Но, наконец, я знал, что это проблема с самой git.
В GitHub 15 дней назад был комментарий от dscho. Он сказал, что они работают над устранением этой проблемы в следующем выпуске. Он также поделился точным msys-2.0.dll
файлом, который может решить проблему для людей, которые не могут ждать.
Лично я не мог дождаться: p. Итак, я попробовал, загрузил файл и бросил его в папку git, как он сказал. И проблема ушла! Это было потрясающе!
Но перед заменой файла обязательно сделайте резервную копию.
Я также попытался убить его после запуска express
, как я привык; используя taskkill /im node.exe
в cmd
, но не было никакого процесса.
Просмотрите эту проблему на GitHub и найдите имя файла msys-2.0.dll
, чтобы быстрее перейти к комментарию.
Это более чем вероятно, просто проблема с вашей консолью, которая не точно отправляет команду процессу. Это довольно часто, особенно при использовании сторонних консолей, таких как cmdr/conemu.
Решение?
Просто нажмите ctrl + c несколько раз, пока не закроется: P
Иногда зависает процесс node.
Проверьте идентификатор процесса с помощью ps
Вы можете использовать grep для node, а затем убить процесс, используя kill -9 [PID]
Я использую git bash на моей машине Windows и столкнулся с этой проблемой за последний месяц или около того.
Я до сих пор не знаю, что вызывает его, но я нашел другой способ его остановить.
Это позволило мне быстро остановить сервер.