【问题标题】:React not communicating with node server反应不与节点服务器通信
【发布时间】:2020-08-05 18:23:51
【问题描述】:

为了完成这个项目,我需要让我的客户端与我的服务器进行通信。 我想要什么:'/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);

路由器示例:

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】:

    app.use 将自动匹配扩展基本路由的所有路由,在您的情况下为/,这就是为什么对/* 的所有请求都将由您的indexRouter 处理。详情请见http://expressjs.com/en/guide/using-middleware.html

    解决此问题的一种方法是更改​​顺序:

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

    【讨论】:

    • 更改他们的使用顺序并不能解决这个问题。我也尝试交换 require 顺序。
    • 可以添加路由器的内容吗?
    • var express = require("express"); var router = express.Router(); router.get("/", function(req, res, next) { res.send("Authorize"); }); module.exports = 路由器;不知道能不能给cmets添加代码格式?
    • 只需编辑您的问题并将其添加到那里。另外请添加indexRouter的代码。
    • 在这种情况下,我的 fetch 需要完整的 URL 才能连接(即localhost:9000/auth
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2021-02-12
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多