我正在嘗試使用 Node.JS 設定模板站點。我是使用 Node.JS 的新手,在繼續撰寫其余代碼之前,我嘗試打開一個 HTML 檔案和一個 CSS 檔案。然而,即使到達reponse.end(),回圈仍繼續運行,實際上是第二次運行,但不會再次運行到最后。我加入了一些 console.log() 來演示這一點。我將把我的 JS 代碼和模式控制臺輸出都放在下面。我不知道如何解決這個問題,任何幫助將不勝感激。非常感謝大家!
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)
我很抱歉我缺乏 NodeJS 經驗,但我似乎無法在其他任何地方找到這個問題的答案。這是加載“coucou”時的控制臺輸出:
reading html...
reading css...
end
reading html...
reading css...
這是在主頁上
reading html...
reading css...
reading html...
reading css...
在第二輪之后它不會繼續,但是瀏覽器永遠不會收到結束信號,因此會無限期地繼續加載。我如何讓它實際處理回應的結尾并告訴我的瀏覽器停止加載?
再次,非常感謝大家!!!
uj5u.com熱心網友回復:
我嘗試將 if-else 塊中的 response.end()s 更改為 response.write() 并像這樣在條件塊之后放置一個 response.end() 。
if (request.url === '/') {
response.write(page)
}
else if (request.url === '/coucou') {
page =markdown.toHTML('#Hello world!')
response.write(page)
console.log("end")
}
response.end()
這似乎成功了!!無論如何,非常感謝大家!
uj5u.com熱心網友回復:
將以下內容添加到您的腳本中:
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);
}
日志輸出應該解釋發生了什么:在第三種情況下,您從未結束回應。
在瀏覽器的 devtools的網路面板中查看還會向您顯示哪個請求仍然掛起而沒有完整的回應。
它很可能是瀏覽器默認請求的圖示。頁面內容已加載,但狀態欄仍將顯示“正在加載”。正如@jfriend 所建議的,
response.status(404).end();在else塊中使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394847.html
標籤:javascript 节点.js
上一篇:具體真值表的宣告
