Так что я столкнулся с неожиданной ошибкой и некоторое время был озадачен, пока не нашел решение на действительно неясной странице вопроса github .
У меня есть приложение NodeJS, работающее с express сервер в основном обрабатывает одну точку сообщения. Моя проблема заключалась в том, что приложение NodeJS зависало случайным образом, и ни один из моих запросов не выполнялся go, если я заметил это, я смог go в командной строке и нажать «Control + c», и это убило бы некоторые скрытый процесс и продолжение нормальной работы; если бы были какие-либо вызовы к конечной точке, то она выполняла бы все из них, как только они были поставлены в очередь.
Я узнал ответ, была ли сама командная строка, когда вы щелкаете в окне «Администратор: Командная строка -...» превращается в «Выбрать администратора: Командная строка -...» , Когда он имеет этот атрибут выбора, сервер express просто зависает и отказывается отвечать на любые другие запросы.
Я обнаружил, что выполнение «Control + c» ИЛИ нажатие Es c избавит от Ключевое слово "Select", после чего приложение возвращается к нормальной работе. Обратите внимание, что если у вас есть ключевое слово «Выбрать» и вы просто нажимаете на другое окно или приложение, оно не избавится от него, если только
Я предполагаю, что при нажатии в командной строке, чтобы выделить текст или скопируйте, он порождает другой процесс, который замораживает консоль, так что вы можете захватить то, что там есть, поэтому, если ваше приложение порождает какой-либо текст в строку cmd, оно будет зависать до тех пор, пока вы не закончите «Выбор» информации из строки cmd. Вот почему вам необходимо нажать «Control + c», чтобы выйти из этого процесса маркировки, или нажать Es c, чтобы указать, что вы сделали пометку строки cmd.
Это связано с путь строки cmd запускает приложения узла? Это связано с NodeJS приложением? Связано ли это с тем, что сервер express отказывается подтверждать запросы POST до выполнения? Мне действительно любопытно, почему это происходит, и я хотел бы получить более подробное объяснение?
РЕДАКТИРОВАТЬ: я просто удалил большую часть своего кода из него и протестировал его здесь, если вы нажмете на окно cmd не ответит на запрос и просто зависнет, пока вы не контролируете C или Es c.
const http = require('http');
const express = require('express');
const bodyParser = require('body-parser'); //Needed to parse content of Text
const app = express();
app.use(bodyParser.urlencoded({
extended: false
})); //Needed to parse content of Text
const {
IncomingForm
} = require("formidable");
app.post('/plex', async (req, res) => {
console.log("test");
res.end('It worked!');
});
http.createServer(app).listen(1338, () => {
console.log('Express server listening on port 1338');
});