首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加catch-all以允许react-router工作后,节点服务器响应为HTML

添加catch-all以允许react-router工作后,节点服务器响应为HTML
EN

Stack Overflow用户
提问于 2019-10-04 01:49:54
回答 1查看 146关注 0票数 0

我已经开发了一个节点后端,反应前端web应用程序几个月了。当我通过nodemon启动服务器,使用npm start启动前端时,它工作得很好。但现在我已经准备好托管一个alpha版本并运行'npm run build‘,我遇到了一些问题。

这似乎源于从服务器端口和react-router访问应用程序的交互。我添加了一个通用终结点app.get('/*'...)连接到我的服务器,让react-router正常工作。所以现在当前端请求数据时,响应是HTML而不是我想要的数组。

我觉得这个问题有一个简单的解决方案,但我还没有看到它。我考虑过使用HashRouter而不是BrowserRouter,但不幸的是我不能使用它,因为我正在使用MSAL Active Directory登录。

server/index.js

代码语言:javascript
复制
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}`));

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-04 04:25:49

将捕获所有端点放在所有其他返回数据的端点之后。

代码语言:javascript
复制
//Endpoints
app.get('/getallemployees/', ctrl.getAllEmployees)

app.get('/*', function(req, res) {
   res.sendFile(path.join(__dirname, './../build/index.html'), function(err) {
      if (err) {
        res.status(500).send(err)
      }
    })
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58224422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档