В ответе узла js не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден)

#node.js #reactjs #web #server #apache2

#node.js #reactjs #веб #сервер #apache2

Вопрос:

Я пытаюсь установить первоначальное соединение между моим node js с серверной частью веб-сервера apache2 и моим интерфейсом React. Я новичок во всем этом и пытаюсь заставить его работать на локальном компьютере перед развертыванием. Я прочитал о CORS и решил проблему с заголовками access origin с его помощью, но я не могу понять, чего мне здесь не хватает.

сервер запускается и прослушивает порт 3000, интерфейс на порту 3001

мой внешний код:

 import React from 'react';
import axios from 'axios';

import logo from './logo.svg';
import './App.css';

export default class App extends React.Component {
  state = {
    persons: []
  }

  componentDidMount() {
      axios.get(`/ping`, {
          headers: {
              "Access-Control-Allow-Origin": "*"
          }
      })
          .then(res => {

              const persons = res.data;
              this.setState({ persons });
          })
  }

  render() {
    return (
        <h1>dfdfdfdfdf{this.state.persons}</h1>
    )
  }
}
  

И мой внутренний код:

 var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var cors = require('cors');
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors());
app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

const hostname = '127.0.0.1';
const port = 3000;

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

app.use(express.static(path.join(__dirname, 'build')))

app.get('/ping', (req, res) => {
  return res.send('pong')
})

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

app.listen(port, hostname, () => {
 console.log(`Server running at http://${hostname}:${port}/`);
});

module.exports = app;
  

Я продолжаю получать ошибки:

Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден) 0.chunk.js: 779 Отклонение необработанного обещания: Ошибка: Запрос не выполнен с кодом состояния 404 (анонимная функция) (0.chunk.js: 779) promiseReactionJob

Комментарии:

1. У вас установлена промежуточная программа, подобная app.use(function(req, res, next) { next(createError(404)); }); , которая создает ошибку. Ошибка передается следующему промежуточному программному обеспечению обработчика ошибок, которое отвечает как ошибка. Вы можете прокомментировать это промежуточное программное обеспечение, потому что оно создает ошибку без каких-либо условий.

2. Это было частью проблемы, мне также пришлось изменить путь URL. Спасибо!