【问题标题】:Can't make an API request with React client无法使用 React 客户端发出 API 请求
【发布时间】:2020-12-09 02:54:16
【问题描述】:

我正在尝试让我的 react 应用程序引用一个 mongoDB 数据库,但我的请求存在一些严重问题。

这是客户端中的服务。

import axios from "axios";

export default
{
    getAll: async () => {
        axios.get("api/quizlist").then((res) => {
            return res;
        }).catch(err =>
            {
                console.log(err);
            });
    }
}

这是我要调用的路线:

app.get("/api/quizlist", (req,res) => {
  console.log("Recieved Request");
  db.QuizData.find().then(data => {
    console.log("Passed Data");
    res.json(data);
  }).catch(err => {
    res.json(err);
  });
});

我收到的错误消息是

Error: Request failed with status code 504
    createError createError.js:16
    settle settle.js:17
    handleLoad xhr.js:61

我已尝试在 API 中为此设置代理连接:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "server": "nodemon server.js"
  }

这在客户端:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "proxy": "http://localhost:5000"
  }

(API 连接到 5000 端口)

【问题讨论】:

    标签: javascript reactjs mongoose connection mern


    【解决方案1】:

    proxy 不属于package.json 文件中的脚本对象,像这样将其移出

    "proxy": "http://localhost:5000"
    "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject",
    }
    

    (修改package.json文件后需要重启应用)

    您的前端请求中还缺少/

    改变

    import axios from "axios";
    
    export default
        {
            getAll: async () => {
                
                // change
                axios.get("api/quizlist").then((res) => {
    
                // to
                axios.get("/api/quizlist").then((res) => {
    
                return res;
            }).catch(err =>
            {
                console.log(err);
            });
        }
    }
    

    【讨论】:

    • 还是不行。有可能我所展示的代码之外的代码可能是问题所在?甚至我的整体项目结构?我有一个用于根文件夹的包锁,一个用于 API,一个用于客户端。这会导致问题吗?
    • 服务中的记录器发送到控制台也可能是相关的,但路由中的记录器不是。
    猜你喜欢
    • 2018-07-18
    • 2021-09-17
    • 1970-01-01
    • 2020-10-10
    • 2021-12-02
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多