как использовать файл stati c с express и реагировать? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть проект, созданный с помощью create-реакции-приложения, и я хотел бы использовать его в express (так как мне нужна некоторая функциональность бэкэнда).

в основном, мой сервер отображает пустую страницу, когда я запускаю его .... вот код моего сервера:

    const express = require('express');
const path = require('path');

const app = express();

// Serve the static files from the React app
app.use(express.static(path.join(__dirname, 'public')));

// An api endpoint that returns a short list of items
app.get('/api/getList', (req,res) => {
    var list = ["item1", "item2", "item3"];
    res.json(list);
    console.log('Sent list of items');
});

// Handles any requests that don't match the ones above
app.get('*', (req,res) =>{
    res.sendFile(path.join(__dirname , 'public', 'index.html'));
});


const port = process.env.PORT || 5000;
app.listen(port);

console.log('App is listening on port ' + port);

если я введу конечную точку http://localhost: 5000 / api / getList , я могу увидеть результат , но когда я хочу отобразить мое приложение реакции для другой конечной точки, страница становится пустой.

Приложение реакции использует другой маршрут, и я также добавил в пакет прокси. json.

мой исходный файл на сервере находится в root приложения реакции, как на изображении. enter image description here

У кого-нибудь есть идея, почему приложение реакции не отображается?

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

У вас есть две строки, которые делают одно и то же:

// Serve the static files from the React app
app.use(express.static(path.join(__dirname, 'public')));

Будет обслуживать ваш индекс. html файл в http://localhost:5000/index.html

Согласно Express документация https://expressjs.com/en/starter/static-files.html

И тогда кажется, что у вас есть второй маршрут:

app.get('*', неправильно отформатированный.

Это потребует быть app.get('/*'.

Если вы не направляете пользователя на несколько маршрутов, то лучше просто использовать root, app.get('/',, а не пытаться перехватить все маршруты.

...