Javascript - Node.js Ошибка: невозможно установить заголовки после их отправки - PullRequest
0 голосов
/ 18 мая 2018

У меня возникли некоторые проблемы с Node.js.

Я пытаюсь загрузить api newsapi.org для получения заголовков главных новостей.Когда я нажимаю 'http://localhost:8082/news/api/tech-crunch',, он попадает в раздел' / news / api /: newsName 'внутри оператора переключателя "tech-crunch".

Он отображает новости в первый раз, но вскорепри загрузке я получаю эту «ошибку: невозможно установить заголовки после их отправки».

Не могли бы вы помочь мне решить эту проблему?

Ниже приведен мой код для сервера.js:

var request = require('request');
var express = require('express');
var app = express();
var cors = require('cors');

let __homeglobals = [];

app.use(cors({credentials:true, origin: 'http://localhost:8080'}));
app.set("jsonp callback", true);

//fetch news by category
app.get('/news/api/:newsName', function(req, res) {
  const API_KEY = '6c78608600354f199f3f13ddb0d1e71a';

  let data = '';

  const techCrunchURL = `https://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=${API_KEY}`

  const businessInsiderURL = `https://newsapi.org/v2/top-headlines?sources=business-insider&apiKey=${API_KEY}`

  let fetchedTechCrunchNews = {
    totalResults: '',
    articles: ''
  };

  switch(req.params.newsName) {
    case 'tech-crunch':
      request(techCrunchURL, function(err, response, html) {        
        
        let formattedData = JSON.parse(response.body);

        data = response.body;
    
        res.setHeader('Content-Type', 'application/json');
        res.send(data);
        
      });

    case 'business insider':
      request(businessInsiderURL, function(err, response, html) {
        let formattedData = JSON.parse(response.body);

        data = response.body;

        res.setHeader('Content-Type', 'application/json');
        res.send(data);
        
      });

    default:
      data = 'Please type in correct news source';
      break;
  }
})

var server = app.listen(8082, function () {
   var host = server.address().address;
   var port = server.address().port;
   
   console.log("Example app listening at http://%s:%s", host, port);
});

1 Ответ

0 голосов
/ 18 мая 2018

Вы забыли добавить break после каждого case

switch(req.params.newsName) {
case 'tech-crunch':
  request(techCrunchURL, function(err, response, html) {        

    let formattedData = JSON.parse(response.body);

    data = response.body;

    res.setHeader('Content-Type', 'application/json');
    res.send(data);

  });
  break;

case 'business insider':
  request(businessInsiderURL, function(err, response, html) {
    let formattedData = JSON.parse(response.body);

    data = response.body;

    res.setHeader('Content-Type', 'application/json');
    res.send(data);

  });
  break;

default:
  data = 'Please type in correct news source';
  break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...