从 uberjar 运行时,Ring 的文件响应对我不起作用。我都试过了
(response/file-response "index.html" {:root "resources/public"})
和
(response/response (clojure.java.io/as-file (clojure.java.io/resource "public/index.html")))
您如何在 uberjar 内的“/”处提供 index.html?
从 uberjar 运行时,Ring 的文件响应对我不起作用。我都试过了
(response/file-response "index.html" {:root "resources/public"})
和
(response/response (clojure.java.io/as-file (clojure.java.io/resource "public/index.html")))
您如何在 uberjar 内的“/”处提供 index.html?
您需要使用ring.util.response/resource-response
which 服务在类路径中找到的文件。假设您要提供在您的 überjar 目录中index.html
找到的文件resources
,则参数几乎与您对以下命令的调用完全相同file-response
:
(response/resource-response "index.html" {:root "public"})
它"public"
与"resources/public"
, 因为resources
是包含在 überjar 中的顶级目录之一,所以public
将在顶级的类路径中找到。(如果从文件系统而不是 überjar 运行,这也是正确的;那么路径需要相对于类路径上的某个顶级目录。)