![](/img/trans.png)
[英]Vuejs unable to access local json file using axios. 404 (Not Found)
[英]Having an issue with fetching data from backend using react useffect hook and axios. getting a 404 error (not found)
我正在構建一個 Netflix 克隆,我在使用 useffect 掛鈎讓我的后端 API 出現問題時遇到了問題。 我收到 404 錯誤(未找到)。 我在 package.json 文件中添加了我的路由作為代理。 這是一個 get 請求,用於獲取我在 MongoDB 中放入數據庫的電影列表。我在使用 postman 時確實得到了列表。不明白為什么會出現此錯誤。 請分享任何想法。
**package.json 文件**
"name": "new",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.11.4",
"@material-ui/icons": "^4.11.2",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"axios": "^0.21.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"sass": "^1.35.1",
"web-vitals": "^1.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:8800/api/"
}
首頁.jsx
import { useEffect, useState } from "react";
import Featured from "../../components/featured/Featured";
import List from "../../components/list/List";
import Navbar from "../../components/navbar/Navbar";
import axios from "axios";
import "./home.scss";
const Home = ({ type }) => {
// eslint-disable-next-line
const [lists, setLists] = useState([]);
// eslint-disable-next-line
const [genre, setGenre] = useState(null);
useEffect(() => {
const getRandomLists = async () => {
try {
const res = await axios.get(
`lists${type ? "?type=" + type : ""}${
genre ? "&genre=" + genre : ""
}`,
{
headers: {
token:
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYzYTA1ZjliZTRiZmEzYTBhOWMxYTQ5ZCIsImlzQWRtaW4iOnRydWUsImlhdCI6MTY3MTcxMjgyMCwiZXhwIjoxNjcyMTQ0ODIwfQ.W2e-RJ0XIQIVgGT47yhEOVOtWbdR5yYk11zmvN3vLzk",
},
}
);
console.log(res);
} catch (error) {
console.log(error);
}
};
getRandomLists();
}, [type, genre]);
return (
<div className="home">
<Navbar />
<Featured type={type} />
<List />
<List />
<List />
<List />
<List />
<List />
</div>
);
};
export default Home;
index.js 后端
const app = express();
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const authRoute = require("./routes/auth");
const userRoute = require("./routes/users");
const movieRoute = require("./routes/movies");
const listRoute = require("./routes/lists");
const cors = require("cors");
app.use(cors());
dotenv.config();
mongoose
.connect(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log("DB Connection Successful!"))
.catch((err) => console.log(err));
app.use(express.json());
app.use("/api/auth", authRoute);
app.use("/api/users", userRoute);
app.use("/api/movies", movieRoute);
app.use("/api/lists", listRoute);
app.listen(8800, () => {
console.log("backend server is running on port 8800");
});
** 后端的 list.js **
router.get("/", verify, async (req, res) => {
const typeQuery = req.query.type;
const genreQuery = req.query.genre;
let list = [];
try {
if (typeQuery) {
if (genreQuery) {
list = await List.aggregate([
{ $sample: { size: 10 } },
{ $match: { type: typeQuery, genre: genreQuery } },
]);
} else {
list = await List.aggregate([
{ $sample: { size: 10 } },
{ $match: { type: typeQuery } },
]);
}
} else {
list = await List.aggregate([{ $sample: { size: 10 } }]);
}
res.status(200).json(list);
} catch (error) {
res.status(500).json(error);
}
});```
我弄清楚了我的令牌已過期的問題。 我只需要將 go 返回到 postman 並登錄並從 postman 獲取新令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.