尝试使用nodejs创建新的Web服务器时,出现错误,提示未定义.html。

var mimeType = {
    "html" : "text/html",
    "jpeg" : "image/jpeg",
    "jpg" : "image/jpeg",
    "png" : "image/png",
    "js" : "text/javascript",
    "css" : "text/css"
};

http.createServer(function(req,res){
    var uri = url.parse(req.url).pathname;
    var fileName = path.join(process.cwd(),unescape(uri));
    console.log('Loading '+uri);

    var stats;

    try{
        stats = fs.lstatSync(fileName);
    }catch(e){
        res.writeHead(404, {'Content-type':'text/plain'});
        res.write('404 Not found\n');
        res.end();
        return;
    }

    // check if file/directory
    if(stats.isFile){
//error happen here
        var mimeType = mimeType[path.extname(fileName)].split(".").reverse()[0];
        res.writeHead(200, {'Content-type': mimeType});

        var fileStream = fs.createReadStream(fileName);
        fileStream.pipe(res);
    }
}).listen(3000);


我是Node的新手,我不知道如何调试。需要帮助和指导。

最佳答案

问题出在以下几行:

var mimeType = mimeType[path.extname(fileName)].split(".").reverse()[0];
res.writeHead(200, {'Content-type': mimeType});


在这里,您要在mimeType响应处理程序函数范围内声明一个createServer变量,基本上使代码顶部的mimeType无法访问。因此,当您尝试从中获取属性时,mimeTypeundefinedmimeType[path.extname(fileName)]

重命名该变量,它应该可以工作:

var contentType = mimeType[path.extname(fileName)].split(".").reverse()[0];
res.writeHead(200, {'Content-type': contentType });

09-28 00:25