Создание Express и React

Я провожу несколько тестов с React и Express. Конечная цель - заставить Express подключиться к базе данных Mysql и получать из нее данные.

Я понимаю, как и React, и Express работают достаточно хорошо, и после нескольких попыток я смог заставить свое приложение React получать данные из Express. Это было сделано путем запуска React на порту 3000 и моего server.js на порту 8080, следуя это руководство.

Что меня смущает теперь, когда у меня это работает локально, так это то, как я должен заставить его работать после создания моего приложения.

Я построил его и загрузил, чтобы проверить, работает ли он, но, конечно же, нет.

http://creativiii.com/build/

Если вы проверите консоль, вы увидите, что она не может связаться / пинговать.

Экспресс работает только локально? Мне сложно это понять.

Вот мои скрипты на всякий случай:

App.js:

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

class App extends Component {

  componentDidMount() {
    fetch('/ping')
      .then(response => response.json())
      .then(posts => console.info(posts))
  }

  render() {
    console.info(process.env.PORT)
    return (
      <div className = "App">
        <header className = "App-header">
          <img src = {logo} className = "App-logo" alt = "logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>
          <a
            className = "App-link"
            href = "https://reactjs.org"
            target = "_blank"
            rel = "noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    );
  }
}

export default App;

server.js:

const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.get('/ping', function (req, res) {
 return res.send(JSON.stringify({ a: 1 }));
});

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(process.env.PORT || 8080);

Обновлено: я написал неправильный заголовок, исправил его сейчас.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
170
1

Ответы 1

Внешний интерфейс: Как правило, в React или Angular вы можете использовать существующие переменные среды и установить ur API глобально только один раз, поэтому, даже если вы измените внутренний порт, изменение одной строки кода заставит приложение ur снова работать

scripts: {
    "dev": "webpack --env.API_URL=http://localhost:8000 --config webpack.config.dev.js",
    "build": "webpack --env.API_URL=https://www.myapi.com --config webpack.config.build.js"
  }

Бэкэнд: Переходя к бэкэнд-части, если вы развертываете приложение на сервере IIS, вам нужно много тренироваться, если вы используете Ubuntu, это упрощает развертывание, и вам не нужно менять строку в своем экспресс-коде, вставленном выше. В случае Ubuntu вы можете просто запустить node index.js и использовать какой-нибудь пакет PM2 для запуска приложения в фоновом режиме.

https://www.npmjs.com/package/pm2

Надеюсь, ваше сомнение разрешится, если нет, вы можете прокомментировать ниже

Я развертываю это на VPS с Ubuntu. Должен ли я загружать всю папку приложения, включая «node_modules»? Я попытался запустить свой файл server.js с помощью узла, но ничего не произошло. В настоящее время я загрузил только свою папку "build".

Eight 27.10.2018 18:39

Вам нужна папка node_modules. Server.js - ваш главный файл?

Gvs Akhil 27.10.2018 18:45

server.js - это файл, использующий Express. Должна ли моя папка node_modules превышать 200 МБ? Кажется ужасно большим

Eight 27.10.2018 18:50

200мб ?? что ты установил? У меня есть папка node.js всего с 20 МБ, которая дает около 50 API для моего приложения.

Gvs Akhil 27.10.2018 19:12

Просто реагируйте и выражайте свое мнение. Согласно это мне нужно запустить npm install, но даже после его запуска я все еще не могу запустить node server.js

Eight 27.10.2018 19:19

Я так не думаю, это новая папка, которую я создал, следуя руководству здесь, затем я запустил установку это.

Eight 27.10.2018 19:26

Нет совсем ничего

Eight 27.10.2018 19:27

Кстати, узел установлен, только что проверил, запустив sudo apt-get install node

Eight 27.10.2018 19:28

Можете ли вы просто прикрепить изображение запущенного узла server.js в ur VPS?

Gvs Akhil 27.10.2018 19:29

Я переместил этот разговор в чат chat.stackoverflow.com/rooms/182648/…

Gvs Akhil 27.10.2018 19:31

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