Javascript “错误”;can';t在发送后设置标题";
我正在尝试编写一个node.js应用程序,使用omdb api获取电影列表。 当我尝试请求Javascript “错误”;can';t在发送后设置标题";,javascript,node.js,api,express,request,Javascript,Node.js,Api,Express,Request,我正在尝试编写一个node.js应用程序,使用omdb api获取电影列表。 当我尝试请求/result路线时,我得到以下错误: Error: Can't set headers after they are sent. at validateHeader (_http_outgoing.js:494:11) at ServerResponse.setHeader (_http_outgoing.js:501:3) at ServerResponse.header (/h
/result
路线时,我得到以下错误:
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:494:11)
at ServerResponse.setHeader (_http_outgoing.js:501:3)
at ServerResponse.header (/home/cabox/workspace/APIs/movie_search_app/node_modules/express/lib/response.js:767:10)
at ServerResponse.contentType (/home/cabox/workspace/APIs/movie_search_app/node_modules/express/lib/response.js:595:15)
at ServerResponse.send (/home/cabox/workspace/APIs/movie_search_app/node_modules/express/lib/response.js:145:14)
at Request._callback (/home/cabox/workspace/APIs/movie_search_app/app.js:18:13)
at Request.self.callback (/home/cabox/workspace/APIs/movie_search_app/node_modules/request/request.js:186:22)
at emitTwo (events.js:126:13)
at Request.emit (events.js:214:7)
at Request.<anonymous> (/home/cabox/workspace/APIs/movie_search_app/node_modules/request/request.js:1163:10)
真诚地希望有人能提供一些指导,帮助您处理/解决此错误。您已经发送了一个字符串作为响应,稍后尝试将呈现的页面发送给客户端,但此操作不起作用
app.get("/results", function(req, res){
[...]
if (!error && response.statusCode ==200) {
[...]
// HERE IS YOUR PROBLEM
res.send(results.search(0).title);
res.render("results", {data: data});
}
});
您已经发送了一个字符串作为响应,稍后尝试将呈现的页面也发送到客户端,但客户端不工作
app.get("/results", function(req, res){
[...]
if (!error && response.statusCode ==200) {
[...]
// HERE IS YOUR PROBLEM
res.send(results.search(0).title);
res.render("results", {data: data});
}
});
@moneydhaze感谢您的回复。你让我彻底检查了代码,然后简单地启动。看来res.send和res.render是冲突的。当我拿出res.render并简化代码时;成功了。请参见下面的简化代码:
var express = require("express");
var app = express();
var request = require("request");
app.set("view engine", "ejs")
app.get("/", function(req, res){
res.send("This is the Home Page")
});
app.get("/results", function(req, res){
request("http://www.omdbapi.com/?s=guardians+of+the+galaxy&apikey=thewdb", function(error, response, body){
if (!error && response.statusCode ==200){
res.send(body);
}
})
});
app.listen(3000,function(){
console.log("Movie App has started!!!");
});
@感谢您的回复。你让我彻底检查了代码,然后简单地启动。看来res.send和res.render是冲突的。当我拿出res.render并简化代码时;成功了。请参见下面的简化代码:
var express = require("express");
var app = express();
var request = require("request");
app.set("view engine", "ejs")
app.get("/", function(req, res){
res.send("This is the Home Page")
});
app.get("/results", function(req, res){
request("http://www.omdbapi.com/?s=guardians+of+the+galaxy&apikey=thewdb", function(error, response, body){
if (!error && response.statusCode ==200){
res.send(body);
}
})
});
app.listen(3000,function(){
console.log("Movie App has started!!!");
});
可能的重复可能的重复