为什么 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();
});
我在使用 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();
});