无法读取'.html'

Cannot read undefiend of '.html'

本文关键字:html 读取      更新时间:2023-09-26

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

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

问题出在以下几行:

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

在这里,您在createServer响应处理程序函数的范围内声明mimeType变量,基本上使代码顶部的mimeType无法访问。所以,mimeTypeundefined,当你试图从它获得一个属性:mimeType[path.extname(fileName)]

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

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