【发布时间】:2021-02-22 07:17:40
【问题描述】:
嗯,StackOverflow 中有很多关于这个错误的问题,我已经看到所有这些问题都对我不起作用。 我正在使用 react with redux 试图获取一些产品。我的后端服务器节点在端口 5000 上运行,并且每当我尝试使用我的前端运行的端口 3000 获取数据时,我同时使用同时启动两个服务器。请有人帮我解决这个问题
package.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 错误
【问题讨论】:
-
在
react或client文件夹中,在package.json中添加新的key和value对"proxy": "http://localhost:5000"。然后你可以做await axios.get('/api/products') -
感谢@lala 它的工作请作为答案发布,所以我可以接受