Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “错误”;can';t在发送后设置标题";_Javascript_Node.js_Api_Express_Request - Fatal编程技术网

Javascript “错误”;can';t在发送后设置标题";

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

我正在尝试编写一个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 (/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!!!");
});
可能的重复可能的重复