Как избежать ошибки на стороне сервера при запуске на стороне клиента из-за componentDidMount () - PullRequest
0 голосов
/ 03 октября 2019

У меня есть небольшой узел, приложение для быстрой реакции. На стороне сервера работает порт 5000, а на стороне клиента - порт 3000. Когда страница индекса на стороне клиента http://localhost:3000/ запускается или обновляется, на стороне сервера возникает ошибка.

На стороне клиента у меня есть следующий компонент, который извлекает данные из серверной части:

class App extends Component {
state = {
    data: null,
    loading: true,
    error: false
  };

    componentDidMount() {
    // Pick whatever host/port your server is listening on
    fetch('http://localhost:5000/getData')
      .then(res => { // <-- The `results` response object from your backend
        // fetch handles errors a little unusually
        if (!res.ok) {
          throw res;
        }
        // Convert serialized response into json
        return res.json()
      }).then(data => {
        // setState triggers re-render
        this.setState({loading: false, data});
      }).catch(err => {
        // Handle any errors
        console.error(err);
        this.setState({loading: false, error: true});
      });
  }

на стороне сервера, у меня есть следующий маршрут:

router.get('/getData', function(req, res) {
    var token = req.query.token;
request('https://www.googleapis.com/analytics/v3/management/accounts?access_token=' + token,  function (error, response, body) {
    if(error){
      console.log(error);
    }else{
          let views = []
   JSON.parse(body).items.forEach(view => {
            views.push({
              name: view.webPropertyId + ' - ' + view.name + ' (' + view.websiteUrl + ')'
            })
          })
      console.log(views)
      res.send(views);

    }
});
})

Вот ошибка, которую у меня есть TypeError: Cannot read property 'forEach' of undefined по поводу этой строки кода JSON.parse(body).items.forEach(view => {

Насколько я понимаю, компонент componentDidMount() выбирает серверную часть, прежде чем я смогуправильно подтвердить подлинность. Нет аутентификации, нет токена, запрос на стороне сервера к ответу Google Analytics пуст и forEach не определен.

Что я должен сделать, чтобы избежать этой ошибки?

...