Skip to content

NodeJS:简单实现一个静态服务器 #27

@hstarorg

Description

@hstarorg
const fs = require('fs'); const path = require('path'); const http = require('http'); const util = require('util'); const MIME_MAP = { '.js': 'text/javascript', '.css': 'text/css', }; const WEB_ROOT = path.join(__dirname, 'webroot'); const server = http.createServer((req, res) => { const { url } = req; let fileUrl = ''; if (/\.[a-zA-Z0-9]+$/.test(url)) { fileUrl = path.join(WEB_ROOT, url); } else { fileUrl = path.join(WEB_ROOT, 'index.html'); } util .promisify(fs.exists)(fileUrl) .then(isExists => { if (!isExists) { res.write('404'); return res.end(); } const extName = path.extname(fileUrl); const mimeType = MIME_MAP[String(extName).toLowerCase()]; if (mimeType) { res.writeHead(200, { 'content-type': mimeType }); } fs.createReadStream(fileUrl).pipe(res); }); }); server .listen(80, () => { const addr = server.address(); console.info('server started...', addr); }) .on('error', console.error);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions