Created
August 30, 2019 08:53
-
-
Save heygema/f755e68ff7a535a291711761ef27d5dd to your computer and use it in GitHub Desktop.
Humble Simple Server - use this to just run index.html without any deps whatsoevvsss.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const http = require('http'); | |
const fs = require('fs'); | |
const path = require('path'); | |
const mime = require('mime'); | |
const PORT = 8000; | |
function notFound(_req, res) { | |
res.writeHead(404, {'Content-Type': 'text/html'}); | |
res.end('<p>404 Not Found</p>'); | |
}; | |
function serveFile(_req, res, fileName) { | |
let filePath = path.join(__dirname, fileName); | |
let mimeType = mime.getType(fileName.split('.').pop()); | |
let readStream = fs | |
.createReadStream(filePath) | |
.on('open', () => { | |
res.writeHead(200, {'Content-Type': mimeType}); | |
readStream.pipe(res); | |
}) | |
.on('error', err => { | |
res.writeHead(404, {'Content-Type': 'text/plain'}); | |
res.send(err); | |
}); | |
}; | |
http | |
.createServer() | |
.on('error', error => { | |
console.log('error >', error); | |
}) | |
.on('request', (req, res) => { | |
let {url} = req; | |
switch (url) { | |
case '/': { | |
serveFile(req, res, 'index.html'); | |
break; | |
} | |
default: { | |
let extRegex = /[A-Za-z][.]\w+/gi; | |
let hasExtension = url.match(extRegex); | |
if (hasExtension) { | |
serveFile(req, res, url); | |
break; | |
} | |
notFound(req, res); | |
break; | |
} | |
} | |
}) | |
.listen(PORT, () => { | |
console.log(`listening on ${PORT}`); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment