gpt4 book ai didi

javascript - res.render() 之后的 Node JS : Error with res. download()

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:14 24 4
gpt4 key购买 nike

我从 Node JS 开始,我收到一个错误:

Error: Can't set headers after they are sent.

你可以看到我的代码,问题出在res.download();或者,如何在没有 res.render() 的情况下显示 View ?

你能告诉我如何解决这个问题吗?谢谢你!

var express = require('express');
var app = express();
var pythonShell = require('python-shell');

app.set('view engine', 'ejs');
app.use(express.static('style'));

app.post('/downloads', function(req, res) {
res.render('downloads.ejs');
console.log("Python script begins");
pythonShell.run('./generator.py', function (err) {
if (err) throw err;
console.log("Python Script Ended");
res.download('mapCreated.tiff', 'map.tiff');
});
})

最佳答案

您将在 res.render 之后发送 res.download。这将尝试再次发送响应,但您不能发送响应两次。这就是导致错误错误:发送后无法设置 header 的原因。

您需要做的是首先渲染 View (您可以发送get请求来渲染 View ),当加载该 View 时,调用另一个路由下载文件(发送post路由来下载)

app.get('/downloads', function(req, res) { 
res.render('downloads.ejs');
});

app.post('/downloads', function (req,res){
console.log("Python script begins");
pythonShell.run('./generator.py', function (err) {
if (err) throw err;
console.log("Python Script Ended");
res.download('mapCreated.tiff', 'map.tiff');
});
})

关于javascript - res.render() 之后的 Node JS : Error with res. download(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057761/

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