尝试使用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
无法访问。因此,当您尝试从中获取属性时,mimeType
是undefined
:mimeType[path.extname(fileName)]
重命名该变量,它应该可以工作:
var contentType = mimeType[path.extname(fileName)].split(".").reverse()[0];
res.writeHead(200, {'Content-type': contentType });