Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,894 questions

51,825 answers

573 users

How to create HTTP web server and load different file types and 404 page in web browser in Node.js

1 Answer

0 votes
const http = require('http')
const path = require('path')
const fs = require('fs')
 
const server = http.createServer((req, res) => {
    const pathFile = path.join(__dirname, req.url === '/' ? 'index.html' : req.url);
    
    const extName = path.extname(pathFile);
    let contentType = 'text/html';
    switch (extName) {
        case '.js':
            contentType = 'text/javascript';
            break;        
        case '.json':
            contentType = 'application/json';
            break;        
        case '.css':
            contentType = 'text/css';
            break;
        case '.png':
            contentType = 'image/png';
            break;
    }
    fs.readFile(pathFile, (err, data) => {
        if (err) {
            if (err.code == 'ENOENT') {
                fs.readFile(path.join(__dirname, '404.html'), (err, data) => {
                    res.writeHead(200, { 'Content-Type': 'text/html' });
                    res.end(data, 'utf8');
                });
            } else {
                res.writeHead(500);
                res.end(`Server Error: ${err.code}`);
            }
        } else {
            res.writeHead(200, { 'Content-Type': contentType });
            res.end(data, 'utf8');
        }
    });

});
 
const PORT = process.env.PORT || 8080;
 
server.listen(PORT, () => console.log(`The server is running on port ${PORT}`));

 
 
/*
run:
 
The server is running on port 8080
 
On http://localhost:8080/worker.js
class Worker {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    show() {
        console.log(`name = ${this.name} age = ${this.age}`);
    }
}
module.exports = Worker;

On http://localhost:8080
Home Page

On http://localhost:8080/abc
404 Not Found Example HTML Page

On http://localhost:8080/package.json
{
  "name": "javascript_node",
  "version": "1.0.0",
  "description": "Node",
  ...
}
    
*/

 



answered Mar 13, 2020 by avibootz
edited Mar 13, 2020 by avibootz
...