Skip to content

Instantly share code, notes, and snippets.

@ryanflorence
Last active February 27, 2025 06:28
Show Gist options
  • Save ryanflorence/701407 to your computer and use it in GitHub Desktop.
Save ryanflorence/701407 to your computer and use it in GitHub Desktop.
Node.JS static file web server. Put it in your path to fire up servers in any directory, takes an optional port argument.
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs")
port = process.argv[2] || 8888;
http.createServer(function(request, response) {
var uri = url.parse(request.url).pathname
, filename = path.join(process.cwd(), uri);
path.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not Found\n");
response.end();
return;
}
if (fs.statSync(filename).isDirectory()) filename += '/index.html';
fs.readFile(filename, "binary", function(err, file) {
if(err) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(err + "\n");
response.end();
return;
}
response.writeHead(200);
response.write(file, "binary");
response.end();
});
});
}).listen(parseInt(port, 10));
console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");
@rpivo
Copy link

rpivo commented Apr 12, 2021

fs.exists is deprecated. fs.statSync can be used to check if file path exists, as in dkebler's code above.

@codespede
Copy link

Thank you for this!

@Anna-art125
Copy link

Incredible article, thanks for sharing it! I think this article will also be useful for you - Node js vs Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment