Я занимаюсь разработкой бэкэнда для узлов и реагирую на интерфейсное веб-приложение в течение пары месяцев. Все работает нормально, когда я запускаю сервер через nodemon и интерфейс с npm start. Но теперь, когда я готовлюсь к размещению альфа-версии и запускаю 'npm run build', у меня возникают проблемы.
Похоже, что это происходит из-за взаимодействия доступа к приложению через порт сервера и маршрутизатор реакции. Я добавил на свой сервер универсальную конечную точку app.get ('/ *' ...), чтобы позволить реагирующему маршрутизатору работать. Так что теперь, когда клиент запрашивает данные, ответом является HTML, а не массив, который мне нужен.
Мне кажется, что есть простое решение, но я просто пока его не вижу. Я решил использовать HashRouter вместо BrowserRouter, но, к сожалению, я не могу использовать это, потому что я использую Active Directory MSAL для входа в систему.
server / index.js
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors')
require('dotenv').config();
const massive = require('massive');
const session = require("express-session");
const morgan = require('morgan');
const path = require('path');
const ctrl = require(`./controllers/controller.js`);
//Middleware
const app = express();
app.use(bodyParser.json());
app.use(cors());
app.use(express.static(__dirname + './../build'));
app.use(morgan('dev'));
//Connection to Azure DB
massive(process.env.CONNECTION_STRING)
.then(db => {
console.log('Connected to Azure PostgreSQL Database')
app.set('db', db)
}).catch(err=>console.log(err))
app.use(session({
secret: process.env.SESSION_SECRET,
cookie: { maxAge: 60000 },
resave: false,
saveUninitialized: true
}));
//Endpoints
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, './../build/index.html'), function(err) {
if (err) {
res.status(500).send(err)
}
})
})
app.get('/getallemployees/', ctrl.getAllEmployees)
app.listen(8080, () => console.log(`Listening on ${8080}`));