2016-05-22 13 views
1

Nodejsを使用してブラウザにhtmlファイルを表示しようとしています。Nodejsエラー: '未定義のisFile()プロパティを読み取れません'

var http = require('http'); 
var url = require('url'); 
var path = require('path'); 
var fs = require('fs'); 

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

var stats; 


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


    try { 
     stats = fs.lstat(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()) { 
     var mimeType = mimeTypes[path.extname(fileName).split(".").reverse()[0]]; 
     res.writeHead(200, {'Content-type' : mimeType}); 

     var fileStream = fs.createReadStream(fileName); 
     fileStream.pipe(res); 
     return; 
    } else if (stats.isDirectory()) { 
     res.writeHead(302, { 
      'Location' : 'index.html' 
     }); 
     res.end(); 
    } else { 
     res.writeHead(500, { 
      'Content-type' : 'text/plain' 
     }); 
     res.write('500 Internal Error\n'); 
     res.end(); 
    } 
}).listen(3000); 

私は取得していますエラーがstats.isFile近くにある():

cannot read property isFile() of undefined 

これは私が使用しているコードは次のとおりです。私は、コードを実行したときに、私は次のエラーを得ました。私はエラーを解決しようとしました。しかし、それは私のために働いていません。私はこのエラーを解決するためにいくつかの提案が必要です。

+0

ここにテキストの写真を掲載しないでください。テキストを投稿する。あなたはすでにあなたのタイトルのほとんどを持っていました。 – EJP

答えて

0

stat=fs.lstatSync("your file") 

コードを使用する必要があります。

fs.lstat("your file",function (err,stats){})

は、コールバックが必要な非同期機能です。ドキュメントhereを見てください。

1

変数statsは、エラーをスローせずに、未定義に設定されます。これは、fs.lstat(fileName)がundefinedを返すために発生します。

前に、またはおそらく代わりにtry catchブロックの文は、あなたのような何かをしたい可能性がある場合:あなたは間違っている機能を使用している

if (!stats) { 
    res.writeHead(404, {'Content-type':'text/plain'}); 
    res.write('404 Not Found\n'); 
    res.end(); 
    return; 
} 
関連する問題