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;