Почему мое приложение React- Express не может получать и отображать данные из express серверной части? - PullRequest
0 голосов
/ 17 июня 2020

Моя структура папки выглядит так:

enter image description here

Код внутри сервера. js:

const express = require('express');
const app = express();
const port = process.env.PORT || 5000;

// console.log that your server is up and running
app.listen(port, () => console.log(`Listening on port ${port}`));

// create a GET route
app.get('/express_backend', (req, res) => {
  res.send({ express: 'YOUR EXPRESS BACKEND IS CONNECTED TO REACT' });
});

Код внутри App. js (находится в папке клиента):

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
state = {
    data: null
  };

  componentDidMount() {
      // Call our fetch function below once the component mounts
    this.callBackendAPI().then(res => this.setState({ data: res.express })).catch(err => console.log(err));
  }
    // Fetches our GET route from the Express server. (Note the route we are fetching matches the GET route from server.js
  callBackendAPI = async () => {
    const response = await fetch('/express_backend');
    const body = await response.json();

    if (response.status !== 200) {
      throw Error(body.message) 
    }
    return body;
  };

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <p className="App-intro">{this.state.data}</p>
      </div>
    );
  }
}

export default App;

пакет. json:

{
  "name": "dtdc-inside",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  },
  "proxy": "http://localhost:5000/"
}

Я запустил "node server. js" без ошибок. перейдите в каталог клиента и запустите "npm start" также без ошибок. Но данные с сервера. js не отображаются в браузере. Мне нужна помощь, чтобы понять, почему это произошло. Спасибо за внимание и прости мой бедный англи sh.

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Благодарю за внимание. При изменении структуры папок (создайте новую папку с именем «backend» в каталоге root, затем переместите файл «server. js» внутрь этой папки), код теперь работает. Спасибо -

0 голосов
/ 17 июня 2020

Сервер. js файл требует некоторых изменений на сервере

const express = require('express');
const app = express();
const port = process.env.PORT || 5000;

//Optional: add this line to parse incoming data. In case you want to accept data
app.use(express.json());

// create a GET route
app.get('/express_backend', (req, res) => {

  //generate output in `json` format rather than `send`.
  res.json({ express: 'YOUR EXPRESS BACKEND IS CONNECTED TO REACT' });
});

//execute your server after writing all logic.
// console.log that your server is up and running
app.listen(port, () => console.log(`Listening on port ${port}`));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...