无法阅读' .html'

时间:2015-09-30 07:08:40

标签: javascript node.js

尝试使用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);

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

1 个答案:

答案 0 :(得分:1)

问题在于以下几点:

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 });