node.js - 我收到错误 GET http://localhost:3000/api/products 404(未找到)
问题描述
好吧,StackOverflow 中有很多关于这个错误的问题,我已经看到所有这些问题都不适合我。我正在使用 react with redux 试图获取一些产品。我的后端服务器节点在端口 5000 上运行,并且每当我尝试使用我的前端运行的端口 3000 获取数据时,我同时使用同时启动两个服务器。请有人帮我解决这个问题
包.json 文件
{
"name": "proshop",
"version": "1.0.0",
"description": "MERN application named proshop",
"main": "server.js",
"type": "module",
"scripts": {
"start": "node backend/server",
"server": "nodemon backend/server",
"client": "npm start --prefix frontend",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"data:import": "node backend/seeder",
"data:destroy": "node backend/seeder -d"
},
"keywords": [
"NodeJS",
"ExpressJs",
"React",
"Redux",
"MongoDb"
],
"author": "Narayan Maity",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"colors": "^1.4.0",
"concurrently": "^5.3.0",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"express-async-handler": "^1.1.4",
"mongoose": "^5.10.9"
},
"devDependencies": {
"nodemon": "^2.0.6"
}
}
这是我的 productsAction.js 文件
import axios from 'axios';
import {
PRODUCT_LIST_FAIL,
PRODUCT_LIST_REQUEST,
PRODUCT_LIST_SUCCESS,
} from '../constants/productConstants';
export const listProducts = () => async (dispatch) => {
try {
dispatch({ type: PRODUCT_LIST_REQUEST });
const { data } = await axios.get('http://localhost:5000/api/products');
dispatch({ type: PRODUCT_LIST_SUCCESS, payload: data });
} catch (error) {
dispatch({
type: PRODUCT_LIST_FAIL,
payload:
error.response && error.response.data.message
? error.response.data.message
: error.message,
});
}
};
如果我使用像 HTTP://localhost:5000/api/products 这样的完整地址,它会给我 CORS 错误
解决方案
focus
如果您添加"proxy": "http://localhost:5000"
到您的client
或react
项目文件夹中,这会容易得多,如下所示:-
客户端/package.json
{
"name": "projectname",
"version": "0.1.0",
"private": true,
"dependencies": {
...}
"proxy": "http://localhost:5000"
}
然后你可以这样做: -
await axios.get('/api/products') // straight away use whatever path you've specified
推荐阅读
- directory - 为什么即使我没有指定,ansible 同步模块也会同步我的 playbook_dir
- javascript - 解析本地文件路径的路径而不是Javascript中的api url
- javascript - 为什么窗口变量未定义?
- javascript - 无法获取此输入的值
- firebase - 如何将 If 语句添加到 main.dart 文件
- julia - 是否有理由将 @static 放在 if VERSION 语句之前?
- spring - 弹簧片规格可分页
- numpy - 为什么在二进制分类问题中解释各种比率的值太低?
- python - 无法进行 for 循环时如何访问 Django 查询集
- extjs - 默认选择树形面板中的节点