我通过以下命令使用 Luminus 创建了一个项目:
lein new luminus myapp +mysql +kee-frame +swagger +oauth +kibit
在这个项目中,我创建了一个 API 调用,它调用一个函数来从磁盘读取文件。API 调用(部分):
{:get {:summary "Returns a file from disk to show in GUI"
:responses {200 {:body ::val/my-file}}
:handler (constantly
{:status 200
:body (gui/get-file)})}}
函数 get-file 位于 myapp.db.gui 相关的命名空间中,如下所示:
(defn get-file
[]
(log/info "Trying to retrieve file")
(read-string (slurp "file.edn")))
当我启动 REPL 并输入命令(mount/start)
时,应用程序正常启动,我可以调用 API 来查看文件的内容。文件位置现在位于我项目的根目录中。但是,如果我将文件放在 resources/myapp 中并将 slurp 命令更改为(slurp "myapp/file.edn")
or (slurp "resources/myapp/file.edn")
,则运行后会出现错误(mount/start)
并且应用程序未启动。如果我尝试读取具有绝对路径的文件,我会得到同样的错误(slurp "C:\\Development\\file.edn")
2020-04-30 12:02:03,512 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.env --=[myapp started successfully using the development profile]=-
2020-04-30 12:02:03,607 [nREPL-session-88d31cf8-b119-4a87-901d-3eee1eb61cc7] INFO myapp.db.gui-related - Trying to retrieve file
Execution error (ConnectException) at java.net.DualStackPlainSocketImpl/connect0 (DualStackPlainSocketImpl.java:-2).
Connection refused: connect
在这个项目中,我将有很多“配置”文件要读取,我希望能够将它们放在我项目根目录中的一个或多个子文件夹中。除此之外,还有另一个文件要读入,它位于我的应用程序的文件夹结构之外。
我怎样才能阅读这些文件?