reactjs Axios请求在网络选项卡中显示“挂起”

yh2wf1be  于 2023-03-01  发布在  React
关注(0)|答案(2)|浏览(249)

我有一个react应用程序,可以从https://api.data.io/api/v1获取数据,但是在发出请求时遇到了一些cors错误,所以我决定创建一个代理服务器。
但是现在,当我从前端发出请求时,没有返回任何数据,当我检查网络选项卡时,我看到pending。我错过了什么?更好的方法是什么?
server.js

const express = require("express");
const axios = require("axios");
const app = express();
const port = 3000;
app.use(cors());
const instance = axios.create({
  baseURL: "https://api.data.io/api/v1",
  headers: {
    "x-id-apix":
      "xxxxxx",
  },
});

const getAllNodes = () => {
  console.log("yay!");
  return instance.get("/nodes", {});
};

app.get("/nodes", getAllNodes);

frontend: index.js

const newinstance = axios.create({
  baseURL: 'http://localhost:3000'
});

// Get all nodes
export const getNodes = () => {
  return newinstance.get('/nodes', {});
};
klsxnrf1

klsxnrf11#

因为这根本不是你在服务器上使用express的方式。建议你参考documentation and examplesReturning 没有任何作用。你可以使用传递给路由处理函数的“response”对象发送一个响应。例如:

const getAllNodes = (req, res) => {
  console.log("yay!");
  instance.get("/nodes", {}).then(data => res.json(data));
};
n6lpvg4x

n6lpvg4x2#

我相信这是因为你没有从你的API中返回任何东西。你能试试这样的东西吗?

const getAllNodes = async (req, res) => {
    const {data} = await instance.get("/nodes" {
        responseType: 'stream'
    });

    data.pipe(res);
})

将请求从axios传输到express响应

相关问题