40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
const http = require("node:http");
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
|
|
const PORT = Number.parseInt(process.env.PORT ?? "8080", 10) || 8080;
|
|
const INDEX_PATH = path.join(__dirname, "index.html");
|
|
|
|
const server = http.createServer((req, res) => {
|
|
if (req.method !== "GET") {
|
|
res.writeHead(405, { "Content-Type": "text/plain; charset=utf-8" });
|
|
res.end("Method Not Allowed");
|
|
return;
|
|
}
|
|
|
|
if (req.url !== "/" && req.url !== "/index.html") {
|
|
res.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" });
|
|
res.end("Not Found");
|
|
return;
|
|
}
|
|
|
|
fs.readFile(INDEX_PATH, (err, data) => {
|
|
if (err) {
|
|
res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
|
|
res.end("Failed to read index.html");
|
|
return;
|
|
}
|
|
|
|
res.writeHead(200, {
|
|
"Content-Type": "text/html; charset=utf-8",
|
|
"Cache-Control": "no-store",
|
|
});
|
|
res.end(data);
|
|
});
|
|
});
|
|
|
|
server.listen(PORT, "0.0.0.0", () => {
|
|
// eslint-disable-next-line no-console
|
|
console.log(`Server running on http://0.0.0.0:${PORT}`);
|
|
});
|