reactjs - 在 create-react-app 应用程序中代理请求
问题描述
我一直在寻找并试图找出为什么这不起作用。我有两个应用程序,一个客户端和一个服务器。我想将客户端请求代理到服务器。我有一条路线叫/api/repositories
. 我不能在 package.json 中有代理,因为它也需要在生产中工作。
它是一个 Create React App 项目。这是重要的文件。
setupProxy.js
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = (app) => {
app.use(
createProxyMiddleware("/api", {
target: "http://my.server.com",
changeOrigin: true,
onProxyReq: (proxyReq) => {
console.log("logged");
if (proxyReq.getHeader("origin")) {
proxyReq.setHeader("origin", "http://my.server.com");
}
},
})
);
};
我在一个名为 Searchbar 的功能性 React 组件中使用它,如下所示:
Searchbar.js
import axios from "axios"
async function getRepos() {
const response = await axios({
method: "GET",
url: "/api/repositories",
});
return response.data;
}
function Searchbar() {
const [repos, setRepos] = useState([]);
// Get the repos on load
useEffect(async () => {
setRepos(await getRepos());
}, []);
return (
<div>
{repos.map((repo) => <p>{repo}<p>)}
</div>
);
}
但是,当我运行npm run start
并运行开发服务器时,我所有的 API 请求都将转到http://localhost:3000/api/repositories
,这显然会返回 404 错误。我究竟做错了什么?
解决方案
推荐阅读
- django - Django - 如何将值从现有 HTML 表单传递到列表视图
- c# - 在 ASP.NET MVC 5 控制器中接收 json 数据
- mysql - 如何在mysql中跳转到下一个id
- ajax - 使用带有 Nuxt js 的 axios 从 Directions API 获取数据时的跨域读取阻塞 (CORB)
- c++ - 查找数组中两个给定数字的出现次数
- angularjs - 如何在谷歌实例上安装 node.js 和 angular.js
- javascript - 当测试用python(pytest)编写时,有没有办法让nodejs代码覆盖?
- android - 我的 ListView 在 android 模拟器中不可见,我使用了线性布局
- linux - 为什么 gcc 列出了与我实际的 cpu 架构不同的行进?
- firebase - 在 Firebase 上为 Vue JS 2 应用程序配置托管