React不与节点服务器通信

问题描述 投票:2回答:1

为了完成这个项目,我需要让我的客户端与我的服务器进行通信。我想要的是:'auth'应该只返回一个字符串 "Authorize".我收到的是:我的index.html中所有标记的字符串拷贝。

前端,使用 reactJS。

 authorize()
  {
      fetch('/auth')
        .then(res => res.text())
        .then(data=>{
            console.log('auth'+data)
        })
        .catch(err => err);
  }

  async componentDidMount()
  {
      try
      {       
        this.authorize();
      }
      catch(e)
      {
          console.log(e);
      }
  }

后端:

 var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var cors = require("cors");

    const dotenv = require('dotenv');
    dotenv.config();

    const jwt = require('express-jwt');
    const jwksRsa = require('jwks-rsa');

    var indexRouter = require("./routes/index");
    var authRouter = require("./routes/auth");

    var app = express();
    app.use(cors());

    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', indexRouter);
    app.use('/auth', authRouter);

Router的例子。

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res, next) 
{ 
  res.send("router/index");
});

module.exports = router;
node.js reactjs express server
1个回答
1
投票

app.use 将自动匹配所有扩展基本路由的路由,在你的例子中就是 /,这就是为什么所有对 /* 将由您的 indexRouter. 见 http:/expressjs.comenguideusing-middleware.html。 以了解更多细节。

解决这个问题的方法之一,就是改变顺序。

app.use('/auth', authRouter);
app.use('/', indexRouter);
© www.soinside.com 2019 - 2024. All rights reserved.