[英]Error: Can't set headers after they are sent. express js
在这里,我试图读取一个简单的文本文件,并将内容放在页面上。 这是一个非常简单的应用程序,但我仍然遇到问题。 下面是我的代码,下面还附加了我的github存储库。
https://github.com/shanemmay/ExpressJsProblem
const express = require('express');
const fs = require('fs');
const app = express();
app.get('/', (req,res) =>
{
//trying to write some basic content to the page
fs.readFile('test.txt', (err, data) =>
{
res.writeHead(200, {'Content-Type': 'text/html'});
res.send("<h1>test complete</h1>");
res.write(data);
});
});
app.post("/post", (req,res) =>
{
//res.send("post");
});
app.listen(8080, () => console.log("App launched"));
尝试在您的get函数中替换此块:
fs.readFile('test.txt', (err, data) =>
{
res.set({
'Content-Type': 'text/html'
});
res.status(200).send("<h1>test complete</h1>" + data);
});
那应该复制您想要的行为。 上面的内容将帮助您设置标题,并显式设置状态消息,尽管,您真正需要的只是做您想要的事情:
res.send( "<h1>test complete</h1>" + data );
const fs = require('fs');
const filePath = "/path/to/file"
app.get('/', (req,res) => {
fs.exists(filePath, function(exists){
if (exists) {
res.writeHead(200, {
"Content-Type": "application/octet-stream",
"Content-Disposition": "attachment; filename=" + fileName
});
fs.createReadStream(filePath).pipe(res);
} else {
res.writeHead(400, {"Content-Type": "text/plain"});
res.end("ERROR File does not exist");
}
});
});
要设置内容类型,我们可以使用如下set
方法。
app.get('/', (req,res) =>
{
//trying to write some basic content to the page
fs.readFile('test.txt', (err, data) =>
{
res.set('Content-Type', 'text/html');
res.send(data);
});
});
参考: http : //expressjs.com/en/4x/api.html#res.set
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.