Node.js server “404 not found” message to 404.html page

前端 未结 5 1832
南旧
南旧 2021-01-04 16:50

Im working with node.js and I would like to know how to display a 404.html instead of a \"404 Not Found\" message.

This is my server.js:

var http = r         


        
5条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-04 16:55

    Just load 404.html using fs.readFile and serve it with response.write

    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) {
      fs.readFile('404.html', "binary", function(err, file) {
        if(err) {
           response.writeHead(404, {"Content-Type": "text/html"});
           response.write("404 Not Found\n");
        } else {
           response.writeHead(404);
           response.write(file, "binary");            
        }
        response.end();
        return;
      }
    }
    
    if (fs.statSync(filename).isDirectory()) filename += 'public/Index/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");`enter code here`
    

提交回复
热议问题