gpt4 book ai didi

javascript - Node Express 服务器错误 : Can't render headers after they are sent to the client

转载 作者:行者123 更新时间:2023-12-03 04:53:32 24 4
gpt4 key购买 nike

我对此还很陌生。我创建了一个在本地运行的 Node 表达服务器。我在 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”文件夹移到与 Node 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');

最佳答案

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

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

您也可以删除 fs.readFile 行。

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

查看 res.sendFile 上的文档 express

试试这个:

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

关于javascript - Node Express 服务器错误 : Can't render headers after they are sent to the client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com