我从Node JS开始,我收到一个错误:
错误:发送后无法设置标头。
你可以看到我的代码,问题在于res.download()
;
或者,如何在没有res.render()
的情况下显示视图?
你能告诉我如何解决这个问题吗?谢谢你!
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');
});
})
答案 0 :(得分:0)
您在res.download
之后发送res.render
。这将尝试再次发送响应,但您不能发送响应两次。这就是导致错误Error: Can't set headers after they are sent.
您需要做的是首先render
视图(您可以发送get
请求来呈现视图)并在加载该视图时,将another route
调用到{{1文件(发送download
路由下载)
post