Express.js sendFile返回ECONNABORTED

时间:2016-04-30 00:54:43

标签: node.js express

在运行Express(3.8.6)的简单节点服务器上。我试图使用sendFile将简单的HTML文件发送到客户端。

  • 从文件读取开始显示路径良好。
  • 在浏览器上禁用缓存。
  • 显示的代码是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

1 个答案:

答案 0 :(得分:5)

您过早地致电res.end()。请记住,Node.js是异步的,因此您实际执行的操作是在sendFile完成之前取消它。将其更改为:

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