Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

257
Visualizações
Node.JS main loop will not return

I am trying to setup a template site using Node.JS. I am new to using Node.JS and am trying to open up an HTML file and a CSS file before continuing towards the rest of the code. However, even upon reaching reponse.end(), the loop continues to run, and in fact goes for a second time, but does not make it to the end again. I threw in some console.log()s in order to demonstrate this. I will throw both my JS code and mode console output down below. I do not know how to fix this, and any help would be appreciated. Thank you all very much!

const server = require('http').createServer()
const markdown = require( "markdown" ).markdown

const fs = require('fs')

server.on('request', (request, response) => {
    response.setHeader('Content-Type', 'text/html')
    var page = fs.readFileSync("html/tb.html", 'utf8')
    console.log("reading html...")
    page+= "<style>"+fs.readFileSync("css/style.css", 'utf8')+"</style>"
    console.log("reading css...")
    const lang = Intl.DateTimeFormat().resolvedOptions().locale
  
    if (request.url === '/') {
        response.end()
    }
    else if (request.url === '/coucou') {
        page+=markdown.toHTML('#Hello world!')
        response.end(page)
        console.log("end")
    }
})

server.listen(4000)

I am sorry for my lack of NodeJS experience, but I could not seem to find an answer to this question anywhere else. Here is my console output when loading 'coucou':

reading html...
reading css...
end
reading html...
reading css...

And here it is on the homepage

reading html...
reading css...
reading html...
reading css...

It does not continue after the second round, but the browser never receives an end signal, and therefore continues to load indefinitely. How do I get it to actually process the end of the response and to tell my browser to stop loading?

Again, thank you all very much!!!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Add the following to your script:

if (request.url === '/') {
    response.end()
} else if (request.url === '/coucou') {
    page+=markdown.toHTML('#Hello world!')
    response.end(page)
    console.log("end")
} else {
    console.log("No response for "+request.url);
}

The log output should explain what's happening: there's a third case in which you never were ending the response.

A look in the network panel of your browser's devtools will also show you which request is still hanging without a complete response.

It's most likely the favicon that a browser requests by default. The page content will have loaded, but the status bar will still show "loading". As @jfriend suggests, use response.status(404).end(); in the else block

about 4 years ago · Juan Pablo Isaza Relatório

0

I tried changing the response.end()s in the if-else blocks to response.write() and put one single response.end() following the conditional block like so.

if (request.url === '/') {
    response.write(page)
}
else if (request.url === '/coucou') {
    page+=markdown.toHTML('#Hello world!')
    response.write(page)
    console.log("end")
}
response.end()

That seemed to have done the trick!! Thank you all very much in any case!

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda