首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express.js sendFile返回生态环境

Express.js sendFile返回生态环境
EN

Stack Overflow用户
提问于 2016-04-30 00:54:43
回答 2查看 7.2K关注 0票数 8

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

  • 从读取的文件中可以看出该路径是好的。
  • 在浏览器上禁用缓存。
  • 所示的代码是server.js文件,直接从节点运行。

我遗漏了什么?

代码语言:javascript
复制
//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();
});

项目设置

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-30 01:05:19

你过早地给res.end()打电话了。请记住,Node.js是异步的,因此实际上您要做的是在sendFile完成之前取消它。改为:

代码语言:javascript
复制
app.get('/', function(req, res){
  res.sendFile(myPath, null, function(err){
    console.log(err);
    res.end();
  });
});
票数 10
EN

Stack Overflow用户

发布于 2022-03-22 01:21:07

我在下载(文件)方面也有同样的问题,现在它工作得很好。

代码语言:javascript
复制
 server.get('/download', (req, res) => {

    res.download('./text.txt', 'text.txt', function (err) {
        if (err) {
            res.status(404)
            res.end();
            console.log('download failed');
            console.error(err);
        } else {
            console.log('downloaded seccefully');
            res.end();

        }
    })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36949557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档