Ich habe folgende Verticle Klasse:Vert.x dienen statische Dateien
public class SendFileExample extends AbstractVerticle {
public void start(Future<Void> fut) throws Exception {
Router router = Router.router(vertx);
router.route("/hello").handler(StaticHandler.create("client"));
router.route("/hello").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
System.out.println("Hello");
response.sendFile("client/index.html");
});
vertx.createHttpServer().requestHandler(router::accept).listen(3000,
result -> {
if (result.succeeded()) {
fut.complete();
} else {
fut.fail(result.cause());
}
}
);
}
}
Meine HTML-Datei ist:
<html>
<head>
<title> hello </title>
</heade>
<body>
<h1> Hello World </h1>
<button> Hello </button>
<script src="app.js"></script>
</body>
</html>
I "StaticHandler.create ..." verwendet, um alle zu dienen statische Dateien im Client-Ordner. Wie Sie verstehen, möchte ich, dass sobald der Server eine GET-Anfrage an "localhost: 3000/Hallo" bekommt, der Client eine HTML-Seite bekommen wird, die app.js Datei aufrufen wird.
Leider kann ich es nicht tun. index.html ist geladen und der Browser kann app.js nicht laden.
Es ist wichtig zu beachten, dass index.html und app.js beide genau im selben Pfad liegen, der $ {PROJECT_ROOT}/client ist. Der Code befindet sich jedoch unter: $ {PROJECT_ROOT}/src/main/java/com/company.
sorry. Es funktioniert immer noch nicht. Hat es für dich funktioniert? – CrazySynthax
Drucken Sie die Pfade aus und sehen Sie, ob sie zu Ihrer Datei passen. Sie können auch die Existenz der Dateien prüfen – injecteer
'System.out.println (" path = "+ req.path());' – injecteer