通过Node js中的http模块设置服务器时"Unhandled Error"消息



我一直在编写以下代码,以便通过node.js设置基本服务器。我的代码-

const http  = require('http')
const server = http.createServer((req, res) => {
// console.log(req)
if(req.url === '/'){
res.end("Welcome to our home page")
}
if(req.url === '/aboutus'){
res.end("Welcome to about us page")
}
res.end(`
<h1> OOPS !!! </h1>
<p>You have requested for any wrong address </p>
<a href = "/">Get back to HOME Page</a>
`)
})
server.listen(5000)

但是,在我的控制台中,运行此代码时会出现以下错误。错误--

node:events:368
throw er; // Unhandled 'error' event
^
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at new NodeError (node:internal/errors:371:5)
at ServerResponse.end (node:_http_outgoing:846:15)
at Server.<anonymous> (/home/tirtharaj/MERN/Node/tutorial(fcc)/8-Built-in Modules/6-httpModule(brief).js:10:9)
at Server.emit (node:events:390:28)
at parserOnIncoming (node:_http_server:951:12)
at HTTPParser.parserOnHeadersComplete (node:_http_common:128:17)
Emitted 'error' event on ServerResponse instance at:
at emitErrorNt (node:_http_outgoing:726:9)
at processTicksAndRejections (node:internal/process/task_queues:84:21) {
code: 'ERR_STREAM_WRITE_AFTER_END'
}

我在代码中找不到任何错误。web浏览器中的任何刷新都会出错。所以请帮我运行这个代码。

这将解决您的问题,您需要将所有代码封装在if-else语句中,以便它始终可以成功终止,只需一条可能的代码路径。

const http = require("http");
const server = http.createServer((req, res) => {
if (req.url === "/") {
res.end("Welcome to our home page");
} else if (req.url === "/aboutus") {
res.end("Welcome to about us page");
} else {
res.end(`
<h1> OOPS !!! </h1>
<p>You have requested for any wrong address </p>
<a href = "/">Get back to HOME Page</a>
`);
}
});
server.listen(5000);

就我个人而言,我会使用switchcase语句来保持它的整洁。

const http = require("http");
const server = http.createServer((req, res) => {
switch (req.url) {
case "/":
res.end("Welcome to our home page");
break;
case "/aboutus":
res.end("Welcome to about us page");
break;
default:
res.end(`
<h1> OOPS !!! </h1>
<p>You have requested for any wrong address </p>
<a href = "/">Get back to HOME Page</a>
`);
break;
}
});
server.listen(5000);

相关内容

最新更新