Express 使用 Axios 获取错误 URL

Express is fetching wrong URL with Axios

我正在使用 MERN 堆栈制作 tinder 克隆。

我的 server.js 在 localhost:8001 并且前端在 localhost:3000 我正在使用 MongoDB 将值存储在 tinder 卡中。

这是我的 axios.js 代码:

import axios from "axios";

const instance = axios.create({
  baseUrl: "http://localhost:8001",
});

export default instance;

server.js:

import express from "express";
import mongoose from "mongoose";
import Cors from "cors";
import Cards from "./dbCards.js";

//App Config
const app = express();
const port = process.env.PORT || 8001;
const connection_url = `<MongoDB URL>`;

//Middlewares
app.use(express.json());
app.use(Cors());

//DB Config
mongoose.connect(connection_url, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

//API Endpoints
app.get("/", (req, res) => res.status(200).send("Hi"));

app.post("/tinder/cards", (req, res) => {
  const dbCard = req.body;
  Cards.create(dbCard, (err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(201).send(data);
    }
  });
});

app.get("/tinder/cards", (req, res) => {
  Cards.find((err, data) => {
    if (err) {
      res.status(500).send(err);
    } else {
      res.status(200).send(data);
    }
  });
});

//Listner
app.listen(port, () => console.log(`Listening on localhost: ${port}`));

TinderCards.js:

import React, { useEffect, useState } from "react";
import "./TinderCards.css";
import TinderCard from "react-tinder-card";
import axios from "./axios";

function TinderCards() {
  const [people, setPeople] = useState([]);

  useEffect(() => {
    async function fetchData() {
      const req = await axios.get("/tinder/cards");

      setPeople(req.data);
    }
    fetchData();
  }, []);

  console.log(people);

  const swiped = (direction, nameToDelete) => {
    console.log("removing " + nameToDelete);
  };

  const outOfFrame = (name) => {
    console.log(name + " left the screen!");
  };

  return (
    <div className="tinderCards">
      <div className="tinderCards__cardContainer">
        {people.map((person) => (
          <TinderCard
            className="swipe"
            key={person.name}
            preventSwipe={["up", "down"]}
            onSwipe={(dir) => swiped(dir, person.name)}
            onCardLeftScreen={() => outOfFrame(person.name)}
          >
            <div
              style={{ backgroundImage: `url(${person.imgUrl})` }}
              className="card"
            >
              <h3>{person.name}</h3>
            </div>
          </TinderCard>
        ))}
      </div>
    </div>
  );
}

export default TinderCards;

问题是 Tinder 卡片不显示图像,在浏览器控制台中我收到卡片图像的 404 错误。

它在 localhost:3000 而不是 localhost:8001 上发送请求 我该如何解决? Axios 的baseUrl 设置为8001 那为什么它发送req 到3000?

好的,明白了, 我在 axios.js 中犯了一个语法错误。 是 baseURL 而不是 baseUrl