我发现您正在运行未弹出的 CRA。这意味着当你跑步时npm run start
从你的 create-react-app 文件夹中,你应该在默认端口 3000 上运行 React。
首先,我建议将服务器和客户端代码保存到带有单独的 package.json 文件的单独文件夹中
现在假设你有这段代码/server/index.js
它直接来自快速示例,但路线以/api
并且还将在端口上运行5000
。这非常重要,您很快就会明白原因。
const express = require('express');
const app = express();
app.get('/api/hello', (req, res) => res.send('Hello World!'))
app.listen(5000, () => console.log('Example app listening on port 5000!'))
现在回到你的/client
我假设您的 CRA 所在的文件夹,打开 package.json 并添加以下行:
"proxy": {
"/api/*": {
"target": "http://localhost:5000"
}
},
现在尝试使用 axios 来调用服务器,例如:
const helloFromApi =
axios
.get('/api/hello')
.then(res => res.data);
希望能帮助到你
更新 10/21/2019
package.json 中的 proxy 字段必须是字符串
"proxy": "http://localhost:5000"