【问题标题】:Node Express sever error : Can't render headers after they are sent to the clientNode Express 服务器错误:在将标头发送到客户端后无法呈现标头
【发布时间】:2017-07-21 15:40:39
【问题描述】:

我对此很陌生。我创建了一个在本地运行的 node-express 服务器。我在public\html 文件夹下有一个index.html。当我访问那个索引页面时,我收到了一个错误Can't render headers after they are sent to the client node server error。我的理解是,如果url是localhost:8080加上/,会渲染index.html?我该如何解决这个问题?非常感谢!

ps:奇怪的是,当我将 index.html 从“public”文件夹移出到与节点 server.js 相同的目录并更改为 app.get('/', function (req, res {fs.readFile('/index.html'.. 时,index.html 似乎工作正常。

 var fs = require('fs');
 var http = require('http');
 var https = require('https');
 var request = require('request');
 var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
 var path = require('path');
 var express = require('express');
 var app = express();
 var certificate = fs.readFileSync( 'something.0.0.1.cert' );
 var privateKey  = fs.readFileSync('something.0.0.1.key');

 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
 app.use(express.static(__dirname+'/public'));
 app.get('/', function (req, res) {
    fs.readFile('__dirname + '/public'+ '/html'+/index.html', function(error, content) {
    if (error) {
        res.writeHead(500);
        res.end();
    }
    else {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.end(content, 'utf-8');
    }
 });
     res.send('Hello World');  
});

https.createServer({
   key: privateKey,
   cert: certificate
 }, app).listen(8080,'0.0.0.0');

【问题讨论】:

    标签: javascript html node.js express server


    【解决方案1】:

    对于每个请求,您只会得到一个响应。你的代码显示res.send('Hello World');

    将此更改为res.sendFile("__dirname + '/public/html/' + 'index.html' ")

    您也可以删除 fs.readFile 行。

    当您移动到与服务器相同的文件时,fs.readFile('/index.html') 起作用的原因是因为该行意味着从同一目录中读取名为 index.html 的文件。但是您想发送对请求的响应,而不仅仅是读取文件。

    查看res.sendFile 上的文档

    试试这个:

        app.get('/', function (req, res) {
             res.sendFile(__dirname + '/public/html/'+'index.html'); 
        });

    【讨论】:

    • 你的意思是删除整行 fs.readFile('__dirname + '/public'+ '/html'+/index.html', function(error, content) ?我如何告诉它读取 index.html 而不是其他 .html 文件呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2019-12-25
    • 2022-11-30
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多