2017-01-18 6 views
0

Ich möchte meine index.html, wenn request.url = '/'. Es scheint jedoch, als ob die Erweiterungsdateien, die zu meiner index.html-Datei gehören, nicht gerendert werden.Erweiterungsdateien nicht gerendert beim Erstellen von node.js Server auf index.html

Hier ist meine server.js Datei:

var verifyMimeType = true; 
var port = 8000; 
var serverURL = "127.0.0.1"; 

console.log("Starting web server: " + serverURL + ":" + port); 

var server = http.createServer(function(req,res){ 
    var parsedURL = url.parse(req.url); 
    console.log("Parsed URL: " + parsedURL); 

    if(req.url == '/'){ 
    filename = '/public/index.html' 
    } 
    console.log("Filename is: " + filename); 
    // sets the extention of the filename 
    var ext = path.extname(filename); 
    var localPath = __dirname; 
    console.log("Local path: "+ localPath); 
    var validExtentions ={ 
    ".html" : "text/html", 
    ".js": "application/javascript", 
    ".css": "text/css", 
    ".txt": "text/plain", 
    ".jpg": "image/jpeg", 
    ".gif": "image/gif", 
    ".png": "image/png" 
    }; 

    var validMimeType = true; 
    var mimeType = validExtentions[ext]; 
    if(verifyMimeType){ 
    validMimeType = validExtentions[ext] != undefined; 
    } 

    if(validMimeType){ 
    localPath += filename; 
    fs.exists(localPath, function(exists){ 
     if(exists){ 
     console.log("Serving file: " + localPath); 
     getFile(localPath,res,mimeType); 
     } 
     else{ 
     console.log("File not found: " + localPath); 
     res.writeHead(404); 
     res.end(); 
     } 
    }); 
    } 
    else{ 
    console.log("Invalid file extention detected: " + ext); 
    console.log("Invalid file name: " + filename); 
    } 
}); 

server.listen(port,serverURL); 

var getFile = function(localPath, res, mimeType){ 
    fs.readFile(localPath, function(err, data){ 
    if(err){ 
     console.log("Error with reading file: ("+ err + ")"); 
     res.writeHead(500); 
     res.end(); 
    } 
    else{ 
     res.setHeader("Content-Length", data.length); 
     if(mimeType != undefined){ 
     res.setHeader("Content-Type", mimeType); 
     } 
     res.statusCode = 200; 
     // the end does two things, it write to the response and 
     // ends the response. 
     res.end(data); 
    } 
    }); 
} 
+0

Sie haben ziemlich viel Protokollierung. Was sagt das Protokoll für eine solche fehlgeschlagene Anfrage? –

+0

es sagt nur, dass im Parsing durch den gleichen Dateinamen (oder public/index.html) immer wieder – lobcity42

+0

Könnten Sie nur das gesamte Protokoll einer einzelnen Anfrage einfügen? –

Antwort

1

Sie vergessen filename zu initialisieren, wenn die URL nicht / ist. Hier ist ein Beispiel zu beheben:

if(req.url == '/') { 
    filename = '/public/index.html' 
} else { 
    filename = path.basename(parsedURL.pathname); 
} 
+0

danke! Das war's :) – lobcity42

Verwandte Themen