Discuss / JavaScript / 作业

作业

Topic source

shadowTy

#1 Created at ... [Delete] [Delete and Lock User]
'use strict'

var
    fs = require('fs'),
    url = require('url'),
    path = require('path'),
    http = require('http'),
    indexHtml = ['index.html', 'default.html'];

var root = path.resolve(process.argv[2] || '.');

console.log('Static root dir: ' + root);

var server = http.createServer(function(request, response) {

    var pathname = url.parse(request.url).pathname;

    var filepath = path.join(root, pathname);

    fs.stat(filepath, function(err, stats) {

        if(!err) {

            if(stats.isFile()) {

                console.log("isFile");

                console.log('200' + request.url);

                response.writeHead(200);

                fs.createReadStream(filepath).pipe(response);

            } else {
                console.log("isDirectory");

                console.log('200' + request.url);

                var getHtml = indexHtml.some((v) => {

                    let finalPath = path.join(filepath, v);

                    console.log(finalPath);

                    try {
                        
                        if(fs.statSync(finalPath).isFile) {

                            console.log('200' + request.url);

                            response.writeHead(200);

                            fs.createReadStream(finalPath).pipe(response);

                            return true;
                        } 
                    } catch {
                       
                    }
                    return false;
                });

                if(!getHtml) {
                    
                    console.log('404' + request.url);

                    response.writeHead(404);
        
                    response.end('404 Not Found');
                }

            }
            
        } else {

            console.log('404' + request.url);

            response.writeHead(404);

            response.end('404 Not Found');
        }
    });
});

server.listen(8080);

console.log('Server is running at 127.0.0.1:8080/');

  • 1

Reply