【问题标题】:"Unhandled Error" message while setting up server through http module in node js通过节点 js 中的 http 模块设置服务器时出现“未处理的错误”消息
【发布时间】:2022-01-22 23:46:39
【问题描述】:

我一直在编写以下代码来通过 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 浏览器中的任何刷新都会出现错误。所以请帮我运行这段代码。

【问题讨论】:

    标签: javascript node.js http httpmodule


    【解决方案1】:

    这将解决您的问题,您需要将所有代码包装在 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);
    

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

    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);
    

    【讨论】:

    • 非常感谢!!!这种方法确实有效。我实际上并不知道我们总是需要将代码包装在 if else 语句中以终止 if。非常感谢。
    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2010-11-29
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多