微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React:添加了 http-proxy-middleware 以从不同的 API 端点获取信息,但现在我有一个 CANNOT /get 错误

如何解决React:添加了 http-proxy-middleware 以从不同的 API 端点获取信息,但现在我有一个 CANNOT /get 错误

我阅读了这篇 React-router urls don't work when refreshing or writing manually,虽然它解释了我面临这个问题的原因,但我不太确定这里的最佳方法是什么。

我设置了 http-proxy-middleware 作为从不同服务器提取信息的解决方法。目前,我正在从 firebase 提取信息以获取有关我的用户的信息,以及我的 localhost:8000 服务器以获取其他信息。

但是,在设置 http-proxy-middleware 后,我面临两个问题:

  1. 当我在浏览器中输入“localhost:3001/signup”时,我看到一个页面显示Cannot GET /signup
  2. 当我输入“localhost:3001/user/username”时,它会显示整个 JSON 响应,而不是允许我使用数据来呈现我的组件。 (下图)

    JSON response http-proxy-middleware issue

这是我的setUpProxy.js


module.exports = function(app){
    app.use(createProxyMiddleware('/api',{ target : 'http://localhost:8000',changeOrigin: true}));
    app.use(createProxyMiddleware('/user',{ target : 'https://us-central1-auth-development-2fa3c.cloudfunctions.net/api',changeOrigin: true}))
    app.use(createProxyMiddleware('/users',changeOrigin: true}))
    app.use(createProxyMiddleware('/scream',changeOrigin: true}))
    app.use(createProxyMiddleware('/screams',changeOrigin: true}))
    app.use(createProxyMiddleware('/login',changeOrigin: true}))
    app.use(createProxyMiddleware('/signup',changeOrigin: true}))

}

这是我的 App.js 路由器设置

  return (
    <MuiThemeProvider theme={theme}>
      <Provider store={store}>
        <Router>
          <Switch>
          <QuickstartProvider>
            <Route exact path="/" component={home} />
            <AuthRoute exact path="/frontpage" component={frontpage} />
            <AuthRoute exact path="/login" component={login} />
            <AuthRoute exact path="/signup" component={signup} />
            <Route exact path="/users/:handle" component={user} />
            </QuickstartProvider>
          </Switch>
        </Router>
      </Provider>
    </MuiThemeProvider>
  );
}

export default App;

如果这有帮助,这是我的 /user/username 页面代码。虽然我认为问题不在这里

class user extends Component {
  state = {
    profile: null,};
  componentDidMount() {
    const handle = this.props.match.params.handle;
    this.props.getUserData(handle);
    axios
      .get(`/user/${handle}`)
      .then((res) => {
        this.setState({
          profile: res.data.user,});
      })
      .catch((err) => console.log(err));
  }
  render() {
    const { screams,loading } = this.props.data;

    const screamsMarkup = loading ? (
      <p> loading data... </p>
    ) : screams === null ? (
      <p>No posts from this user</p>
    ) : (
      screams.map((scream) => <Scream key={scream.screamId} scream={scream} />)
    );
    return (
      <div>
        {this.state.profile === null ? (
          <p>Loading Profile...</p>
        ) : (
          <StaticProfile profile={this.state.profile} />
        )}
        {screamsMarkup}
      </div>
    );
  }
}

user.propTypes = {
  getUserData: PropTypes.func.isrequired,data: PropTypes.object.isrequired,};

const mapStatetoProps = (state) => ({
  data: state.data,});

export default connect(mapStatetoProps,{ getUserData })(user);

我对反应很陌生,这是我第一次使用 http-proxy-middleware,如果我没有尽可能最好地解释我的问题,我深表歉意。

先谢谢你!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。