当前位置: 首页 > 知识库问答 >
问题:

如何使用React路由器修复React.js子路径错误的代理重定向?

公孙向荣
2023-03-14

我正在使用 React 路由器制作一个多页应用程序,并且我正在将 Node 用于后端。Node 正在端口 3000 上工作,React 在端口 3001 上工作。我已经在前端的包.json中设置了一个代理(React)。我的 API 可以在本地主机上访问:3000/api/ 所以我从前端(端口:3001)获取或发布公理看起来像这样:

axios.post('api/login/',{data........})

它可以从父路径(如/item或/example)完美工作http://localhost:3001/xxxxxx/…我可以在端口3000上访问我的/api/login。

但是从像 http://localhost:3001/another/ex/ 或 http://localhost:3001/xxxxxx/example/ 这样的子路径...我在控制台中看到 get 或 post 请求被发送到 http://localhost:3001/xxxxxx/example/api/login 在这些情况下,代理无法正确重定向。

我已经找到了避免子路径的解决方案,但我想知道到底发生了什么,解决方案是什么?

提前感谢您的帮助!

<Router history={history}>
<NavBar history={history} refresh={this.state.refresh}/> 
<Switch>
<Route exact path="/" render={(props) => <MainPage history= 
{history} />}/>

<Route exact path="/item" history={history} component= 
{ComponentX1} />

<Route exact path="/example" history={history} component= 
{ComponentX2} />

<Route exact path='/another/ex' history={history} component= 
{ComponentY1}/>

<Route exact path='/xxxxxx/example' history={history} component=    
{ComponentY2}/>

</Switch>
<Footer/>
</Router>

我想了解正在发生什么。

共有2个答案

颜华池
2023-03-14

我正在使用next.config。js来处理我的API服务器代理。我也面临同样的错误。因为我的API路由类似于http://172.17.19.79:8000/api/job/所以我更改了下一个配置。js到下面的代码:

module.exports = {
    async rewrites() {
        return [{
            source: '/api/:path*',
            destination: 'http://localhost:8000/api/:path*/'
        }]
    }
}
濮阳品
2023-03-14

使用必须有这样的路径。

axios.post("/api/login", { ...data }) // Included '/' at the beginning

另外,请检查包.json 中的代理是否如此

...
proxy: 'http://localhost:3000' // not '/' at end.
...

如果您有任何疑问,请在评论中与我联系。

 类似资料:
  • 我正在尝试使用react router(版本^1.0.3)做一个简单的重定向到另一个视图的操作,我只是觉得有些累。 我只需要将用法发送到“/login”,就这样。 我能做什么? 控制台中的错误: 未捕获的引用错误:未定义PropType 用我的路线归档

  • 如何修复从Json到React组件渲染的本地路径, 我在互联网上到处寻找答案,但运气不好:( 从'React'类导入React产品扩展React.Component{constructor(props){super(props)} }

  • 我正在尝试在我的URL中传递参数,但我的阅读有问题。我正在使用react-router v4。 网址:http://localhost:3000/reset?token=123我试着这样读: 但这打印空对象。奇怪的是,我试图将问号更改为其他字符,看起来它解决了我的问题,但我还是想保留问号。 网址:http://localhost:3000/reset_token=123 这已经工作了< code

  • 我一直试图做一个简单的重定向到按钮点击的另一个组件,但由于某种原因,它不起作用。我想重定向到/dashboard并从登录显示AdminServices,如下所示: //索引。js //应用程序。js //登录。js //管理服务。js

  • 我想在单击登录页中的按钮后重定向到主页。但是,当我单击地址栏中的按钮时,主页的路径会显示出来(它重定向到主页)…但它不会呈现与该路径相关的组件。它仍然显示带有主页地址的登录页。因此,我必须刷新页面才能呈现主页。这里有什么问题??? 在我的登录页面中…这是我用于单击按钮的功能。。 在我的索引,js页面...

  • 我正在使用React路由器与链接,以改变URL和导航通过应用程序。在阅读列表中,我使用以下代码导航用户阅读edit: 我定义了以下路由: 我怎样才能解决那个问题?