2016-04-30 26 views
2

Express(3.8.6)を実行している単純なノードサーバー上。 sendFileを使って単純なHTMLファイルをクライアントに送信しようとしています。Express.js sendFile returns ECONNABORTED

  • パスは、読み込まれたファイルから良好であることが示されています。
  • ブラウザでキャッシュが無効になっています。
  • コード示したがserver.jsファイルで、ノードから実行される直接

私は何をしないのですか?

コード

//server.js 

var http = require("http"); 
var express = require("express"); 
var app = express(); 
var server = http.createServer(app); 
var path = require('path'); 

//Server views folder as a static in case that's required for sendFile(??)  
app.use('/views', express.static('views')); 
var myPath = path.resolve("./views/lobbyView.html"); 

// File Testing 
//-------------------------- 
//This works fine and dumps the file to my console window 
var fs = require('fs'); 
fs.readFile(myPath, 'utf8', function (err,data) { 
    console.log (err ? err : data); 
}); 

// Send File Testing 
//-------------------------- 
//This writes nothing to the client and throws the ECONNABORTED error 
app.get('/', function(req, res){ 
    res.sendFile(myPath, null, function(err){ 
    console.log(err); 
    }); 
    res.end(); 
}); 

プロジェクトの設定

Project Setup

答えて

4

あなたは途中でres.end()を呼んでいます。 Node.jsが非同期であることを覚えておいてください。実際にやっていることは、完了する前にsendFileをキャンセルすることです。

app.get('/', function(req, res){ 
    res.sendFile(myPath, null, function(err){ 
    console.log(err); 
    res.end(); 
    }); 
}); 
+0

Thx、それは私には私のコールバック(非同期)の考えを改善しなければならないと思う。 –