【发布时间】:2020-07-12 16:41:42
【问题描述】:
我有一个 MERN 应用程序,它使用以下组合:
- Axios 的异步/等待,以及
- Redux
管理整个应用程序的数据流。 Redux主要用于登录+授权(along these lines)。在我的应用程序的许多页面之间共享的其他一些表是通过 redux 获取的,并且可以通过 reduxState 访问。但是,由于我的 MERN 应用程序中的大多数路由都不需要共享状态,因此我只是使用 axios 从我的 Mongo 数据库中获取大部分数据。
我目前只有 redux 提取有问题,包括登录/授权以及通过 redux 提取的所有其他表。在我的控制台中,我收到有关 redux 操作的以下错误:
应用程序的节点 API 在端口 8080 上提供服务,如果我复制此 url,更改端口,然后将 http://localhost:8080/api/cbb/teams/list 直接粘贴到我的 chrome 浏览器中,它确实会返回我所期望的数据。所以我认为端口 3000 / 8080 存在问题。端口 3000 是应用程序客户端服务的地方(我相信),我认为这就是 Redux 向端口 :3000 发出 GET 请求的原因。
我的问题是,我可以做些什么来解决/调试这个问题,以便我的 Redux 获取再次工作?我假设我只需要将 Redux 提取到正确的端口“指向”,但我不确定如何执行此操作。
编辑 1
按照this question 的行,我的client 文件(包含我的所有前端代码)位于我的节点API 目录中。在我的client/package.json 文件中,我有一行"proxy": "http://localhost:8080",
编辑 2
这是来自teams-action 的主要函数,它构建然后获取的 URL:
export function fetchTeams(team, conference) {
return dispatch => {
let url = '/api/cbb/teams';
if (team) { url += '/team/' + team; }
else if (conference) { url += '/conference/' + conference; }
else { url += '/list'; }
console.log('fetchTeams url: ', url);
dispatch(fetchSportsDataBegin());
return fetch(url)
.then(handleErrors)
.then(res => res.json())
.then(json => {
dispatch(fetchSportsDataSuccess(json));
return json;
})
.catch(error => dispatch(fetchSportsDataError(error)));
};
}
fetchCBBTeams 是从页面的主容器组件调用的。打印出来的 url 就是 /api/cbb/teams/list,因为我故意不带参数调用它
【问题讨论】:
-
您能展示一下您是如何实际发出提取请求和构建 API URL 的吗?在第一个 Redux 链接中,他们正在使用
fetch(`${config.apiUrl}/users/authenticate`, ...)并使用config.apiUrl来配置 API 源。在您发布的第二个链接中,OP 未能使用proxy配置来发出他们的获取请求,这就是为什么它对他们不起作用。 -
当然,将对帖子进行编辑 - 已更新
-
return fetch(proxy + url)
-
当我用
fetch('http://localhost:8080' + url)更新返回时,它可以工作,是的 -
但是我不认为我想将它硬编码到我所有的 redux 操作文件中,因为那样它就不会从 prod 上的生产路径中获取,不是吗?
标签: javascript node.js reactjs redux react-redux