为什么 axios 不适用于静态 nodejs 服务器?

Why axios doesn't work with static nodejs server?

我在使用 React 生产 axios .get 时遇到问题。

我用 express 创建了一个 nodeJS 服务器来在每次我想刷新我的页面时呈现我的反应页面。那个工作。

但问题是它阻止了我的 axios .get()。所以,我的页面正常显示,但没有我在开发模式下正常获取的数据。

后端 => server.js 使用 sequelize 模块来管理我的数据库

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

app.use(express.json());
app.use(cors());

const db = require('./models');

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

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


const governmentCreateRouter = require('./routes/GovernmentCreate');
app.use("/governmentCreate", governmentCreateRouter);

db.sequelize.sync().then(() => {
    app.listen();
});

后端 => GovernmentCreate.js

const express = require('express');
const router = express.Router();
const { GovernmentCreate } = require('../models');

router.get("/", async (req, res) => {
    const listOfGovernments = await GovernmentCreate.findAll({
        include: {all: true}
    });
    res.json(listOfGovernments);
});

FrontEnd => 我的 GouvernmentWall.js 中的部分代码用 url https://www.mon-gouvernement.fr/gouvernement-galerie

调用
const [governmentList, setGovernmentList] = useState([]);

axios.get(`https://www.mon-gouvernement.fr/GovernmentCreate`)
            .then((res) => {
                console.log(res.data);

                const resData = res.data;

                setGovernmentList(sortResData);

            }).catch((err) => {
                console.log(err);
            });

经过多次搜索,我认为问题出在我 server.js 中的这些行:

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

但是如果我删除它,当我尝试刷新我的页面时,我会得到一个白页显示 Cannot GET /gouvernement-galerie

所以我正在储备这一期。我需要你的帮助才能前进。

问题解决!

正如@jonrsharpe 提到的,我必须将 .get('/*' 切换到路线的底部。我的 server.js 看起来像:

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

app.use(express.json());
app.use(cors());

const db = require('./models');

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

//************************************************
// ROUTES
//************************************************
const governmentCreateRouter = require('./routes/GovernmentCreate');
app.use("/governmentCreate", governmentCreateRouter);

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


db.sequelize.sync().then(() => {
    app.listen();
});