简体   繁体   中英

Having an issue while running html file using Nodejs

I watched a tutorial to run node.js server for the very first time on your computer. Luckly I've created the server but got stck as I tried to show the html content on the exact same server. This is my index.js file code -

const http = require("http");
const fs = require("fs");
const port = 8020;

const server = http.createServer((req, res) => {
  res.writeHead(200, { "Contet-type": "text/html" });
  fs.readFile("index.html", (err, data) => {
    if (err) {
      res.writeHead(404);
      res.write("Error file not found");
    } else {
      res.writeHead(data);
    }
    res.end();
  });
});

server.listen(port, function (err) {
  if (err) {
    console.log("Something went wrong");
  } else {
    console.log("server listening on port " + port);
  }
});

And this is what I'm getting in the terminal -

PS C:\Users\Dell\OneDrive\Desktop\New folder> node index.js
server listening on port 8020
node:_http_server:343
    throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);
    ^

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>This is my first nodeJs project</h1>
</body>
</html>
    at new NodeError (node:internal/errors:393:5)
    at ServerResponse.writeHead (node:_http_server:343:11)
    at C:\Users\Dell\OneDrive\Desktop\New folder\index.js:12:11
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  code: 'ERR_HTTP_INVALID_STATUS_CODE'
}

Node.js v18.12.1
PS C:\Users\Dell\OneDrive\Desktop\New folder> 

And not even the localhost, which is 8020 in this case, is not running on the browser.

I just want to know the mistakes here that I'm totally unaware with or something that I need to do in order to have my desired output.

You're writing the HTML to the header of the response:

res.writeHead(data);

you want:

res.end(data);

or

res.write(data);
res.end();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM