MERN App отлично работает на dev, но не на производстве

У меня есть эта ошибка с моим приложением реагирования, которое мне очень трудно отлаживать. я создал это приложение со стеком mern, и оно отлично работает на моем локальном сервере, получая все необходимые данные из моей базы данных mongo db и показывая, но когда я опубликовал его на heroku, я получаю эту ошибку "Uncaught (in обещание) TypeError: this.state.data.map не является функцией ". Теперь я зарегистрировал this.state.data, и он выдает на dev, но на производстве он не работает. Вот URL-адрес https://desolate-brushlands-16337.herokuapp.com/

и, пожалуйста, смотрите мой код реакции ниже. Я буду очень признателен за любую информацию. Спасибо

import React, { Component } from 'react';
import moment from 'moment';

import $ from 'jquery';
import axios from 'axios';

import {

  Link
} from 'react-router-dom';

import blogTopImage from '../../images/blog2.png';


var divStyle;

divStyle = {
  backgroundImage: "url("  + blogTopImage + ")" ,
  backgroundPosition: 'center center',
  backgroundRepeat:'no-repeat',            
 backgroundSize: 'contain',
 height: '300px',
}


class Blog extends Component {
 constructor(props) {
   super()

this.state = {

  data :[],
  firstName:'',
        lastName:'',
        email:'',
}
     this.handleFirstNameChange = 
this.handleFirstNameChange.bind(this);
  this.handleLastNameChange = 
this.handleLastNameChange.bind(this);
  this.handleEmailChange = this.handleEmailChange.bind(this);


}



handleFirstNameChange = (e) => {
  this.setState({firstName:e.target.value})
}


handleLastNameChange = (e) => {
  this.setState({lastName:e.target.value})
}

handleEmailChange = (e) => {
  this.setState({email:e.target.value})
}



enter = (e) => {




  axios.post('../api/newsletter', {
    firstName: this.state.firstName,
    lastName: this.state.lastName,
    email: this.state.email,

  })
  .then(function (response) {
    console.log('response from add post is ', response);

  })
  .catch(function (error) {
    console.log(error);
  });


  }



componentDidMount = () =>{

    axios.get(`../api/check`)
    .then(res => {
      var data = res.data;
       this.setState({ data });
    })



  $(document).ready(function(){

  $('.container').fadeIn(3000);

  });

}


 render() {

    return (

  <main>
<div class="wik31">
<div style={divStyle} >


</div>

</div>



  <div className="container">




  <div className="space6"></div>

  <div className=" row">




    {this.state.data.map(data => 
            <Link to={'/page/' + data._id}>


    <div className=" bog col s12 m6 l4 blog-container" style= 
   {{

backgroundImage: "url(" + data.postImage + ")" ,
backgroundPosition: "center center",
backgroundRepeat: "no-repeat",
backgroundSize: "cover",
height: '350px',



    }}>


     <div className="after" >
     <div className="blog_title">
     <p class="wik28"> {data.title}</p>
     </div>
     <div className="blog_date">

     <p> 
     {moment(data.timestamp).format('ll')}
    </p>

     </div>
     </div>



 </div>
 </Link>

 )}





    </div>

  <div className="space2"></div>

<form>
 <h4 className="wik7  center">Sign up for The Peel</h4>
    <div className="space6"></div>

     <div id="notif-container">

     <div className="input-field  notif-item1">
    <input type="text" id="inputFirstName"  onChange= 
{this.handleFirstNameChange.bind(this)} placeholder="First 
Name" required className="validate  tat"/>

  </div>

     <div className="input-field  notif-item1">
    <input type="text" id="inputLastName"  onChange= 
   {this.handleLastNameChange.bind(this)} placeholder="Last 
   Name" required className="validate  tat"/>
    </div>


  <div className="input-field notif-item2">
    <input type="text" id="inputEmail"  onChange= 
{this.handleEmailChange.bind(this)} placeholder="Email" 
 required className="validate  tat"/>
  </div>

  <div className="notif-item3">
                                <button className="btn btn-large 
BottonColor"onClick={this.enter.bind(this)}  type="submit" 
style = {{width:'100%'}}>
                                    subscribe
                                </button>


                            </div>



</div>

</form>
<div className="space2b"></div>




</div>
   <div className="space5"></div>
  </main>


    );
  }



}



export default Blog;

0 ответов

Другие вопросы по тегам