Вы должны сделать что-то вроде того, что я сделал:
код на стороне сервера:
Основной компонент:
const express = require('express');
const server = express();
const path = require('path');
const tweets = require ('./tweets')
const distFolder = path.join(__dirname, '../my-app/build')
server.use("/api/tweets", tweets, function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
next();
}
)
server.use(express.static(distFolder))
server.listen(process.env.PORT || 9090)
компонент tweets.js:
router.get('/', (req, res) => {
client.get('statuses/user_timeline', params, function(error, tweets, response) {
if (!error) {
res.send(tweets);
}
else {
res.status(500).json({ error: error });
}}
)})
Теперь я могу сделать GET для / api / post, а экспресс будет перенаправлен на client.get и вернуть твиты.
См. Мой React Component:
lass Notifications extends Component {
constructor(props) {
super(props);
this.state = {
hits: [],
isLoading: false,
error: null,
};
}
componentDidMount() {
this.setState({ isLoading: true });
Axios.get('http://127.0.0.1:9090/api/tweets'
,{
headers: {
'Access-Control-Allow-Origin': '*',
}}
)
.then(result => this.setState({
hits: result.data,
isLoading: false
}))
.catch(e => console.log(e));
}
render() {
const { hits, isLoading } = this.state;
if (isLoading) {
return (
<div className='feed_main'>
<h2 className="js-ariaTitle">
Loading...
</h2>
</div>
)
}
else {
return hits.map((data) =>
<div className='feed_main'>
<strong className="fullname">{data.user.name}</strong>
<article
key={data.id}
>{data.text}
</article>
<br />
</div>
)
}
}
}
export default Notifications;