尝试使用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);
我是节点的新手,我不知道如何调试。需要帮助和指导。
答案 0 :(得分:1)
问题在于以下几点:
var mimeType = mimeType[path.extname(fileName)].split(".").reverse()[0];
res.writeHead(200, {'Content-type': mimeType});
在那里,您在mimeType
响应处理函数的范围内声明了createServer
变量,基本上使代码顶部的mimeType
无法访问。因此,当您尝试从中获取属性时,mimeType
为undefined
:mimeType[path.extname(fileName)]
重命名该变量,它应该有效:
var contentType = mimeType[path.extname(fileName)].split(".").reverse()[0];
res.writeHead(200, {'Content-type': contentType });