ПРИМЕЧАНИЕ: эта проблема возникает на одной машине linux, и я тестировал ее на других linux машинах, там она работает нормально.
Я создал http-сервер, используя nodejs http-пакет как ниже:
НЕ РАБОТАЕТ
const http = require('http');
const fs = require('fs');
const hostname = '0.0.0.0';
const port = 9001;
const printContent = function (content) {
console.log('***** Content of File STARTS *****\n');
console.log(content);
console.log('\n*** Content of file: ENDS *****');
}
const server = http.createServer((req, res) => {
setTimeout(function () {
// printContent('html');
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end('Hello');
}, 0);
console.log('*** function ends ***');
});
// server.timeout = 5000;
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
В этом случае ответ заканчивается на ERR_EMPTY_RESPONSE
, но когда я удаляю setTimeout, он работает нормально. РАБОТАЕТ ОТЛИЧНО:
const server = http.createServer((req, res) => {
printContent('Hello');
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end('Hello');
});
server.listen(9001);
Это очень странное поведение, с которым я столкнулся, если я сделаю что-то асинхронное, не сработает.