Skip to content

Instantly share code, notes, and snippets.

@heygema
Created August 30, 2019 08:53
Show Gist options
  • Save heygema/f755e68ff7a535a291711761ef27d5dd to your computer and use it in GitHub Desktop.
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.
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