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

无法使用vertx设置react路由

孟谭三
2023-03-14
public class BackendVerticle extends AbstractVerticle {

  @Override
  public void start() throws Exception {
    // tag::backend[]
    Router router = Router.router(vertx);
    
    router.get().handler(StaticHandler.create()); // <3>

    vertx.createHttpServer()
      .requestHandler(router)
      .listen(8080);
    // end::backend[]
  }

  // tag::main[]
  public static void main(String[] args) {
    Vertx vertx = Vertx.vertx(); // <1>
    vertx.deployVerticle(new BackendVerticle()); // <2>
  }
  // end::main[]
}

我已经创建了反应应用程序与顶点以下https://how-to.vertx.io/single-page-react-vertx-howto/.我已经设置反应路由使用反应路由器工作正常当我使用内部反应节点服务器运行在localhost:3000default.But当我trid通过vertx静态处理程序提供静态页面除了默认/路由其他路由返回“未找到”输入图像描述在这里

共有1个答案

司宏伯
2023-03-14

当静态网站建立时,它存在于单个索引HTML文件中。

React路由器允许为特定视图创建路径。这些路径可以由React路由器解释,但它们不会映射到后端服务器上的实际文件。

这就是为什么如果您尝试加载除 /以外的任何内容,则会收到 404 NOT FOUND 响应的原因。

要解决此问题,请将Vert.x Web路由器配置为将< code>StaticHandler无法加载的任何内容重新路由到< code>/:

// After you've setup the other routes
router.get().handler(StaticHandler.create());
router.get().handler(rc -> rerouteToIndex(rc));

private void rerouteToIndex(RoutingContext rc) {
  if (!"/".equals(rc.normalisedPath())) {
    rc.reroute("/");
  } else {
    rc.next();
  }
}
 类似资料:
  • 是否有方法将defaultValue传递给状态?我也尝试了value={},但值根本不变。

  • 我是vertx的新手,所以可能我做错了什么。我正在尝试实施以下路线: 这是避免在所有处理程序中重复此逻辑的正确方法吗? 我试图链接处理程序,处理程序从路径中读取参数,试图找到相应的用户,并将该用户放入上下文中。如果未找到用户,则返回状态代码400。否则将调用下一个处理程序。我想对参数应用相同的原则。 在尝试实现这一点时,我认为我发现了路径的问题,更具体地说是尾部的斜线和星形。文档中指出,后面的斜杠

  • 该应用程序从另一台机器为我工作,现在从另一台计算机上的存储库下载文件给了我这个问题 失败:构建失败,出现异常。 > 其中:设置文件'C:\Users\samoe\Desktop\MCGPS\TeachAll\android\Settings.gradle' 出了什么问题:无法编译设置文件“C:\Users\samue\Desktop\MCGPS\TeachAll\android\settings.

  • 问题内容: 我试图将我的一些路由与React Router v4一起分组以清理一些组件。现在,我只想将非登录路由组和管理路由分组在一起,但是以下操作无效。 main.js public.js Greeting组件显示在“ localhost:3000 /”,但SignupPage组件显示在“ localhost:3000 / signup”,而Login组件不显示在“ localhost:3000

  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击