请在 2024 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面获取有关本网站的更多信息。

0
工具
已重新分类

我 dep.src/edn 中有两个别名

{
 :deps
 {
  org.clojure/spec.alpha {:mvn/version "0.2.194"}
  aleph/aleph {:mvn/version "0.4.7-alpha7"}
  hiccup/hiccup {:mvn/version "2.0.0-alpha2"}
  }

 :aliases 
 { 
  :web-server {
               :exec-fn web.network-service/run 
               :exec-args {:port 8080} 
               }
  :test-web-server { 
                    :exec-fn test.tnetwork-service/run 
                    :exec-args {:port 9090}
                    }
  }
 }

当调用时

clojure -X:web-server

我得到

Function not found: web.network-service/run

调用时一切正常

clojure -X:test-web-server

我不明白为什么会这样,exec-funs 基本上是相同的。请查看完整代码: https://github.com/sidesteps/network-grid
我在全局 dep.src/edn 中设置了 :paths ["." "src"]

2 个答案

+1

被接受
 
最佳答案

src/web/network_service.clj 中你有拼写错误

(ns web.netwok-service

缺少一个 r,因此命名空间与文件名不匹配,无法正确 require。

\"\" 评论了 sidesteps
非常感谢您的关注。这很尴尬。也许这应该是clojure cli流水线上某个地方的cough造成的呢?
\"\" 评论了 Sean Corfield
如果在REPL中尝试(这是我调试的方法),则需要require web.network-service并找到一个匹配的文件,然后加载它,这会让您拥有一个定义为web.netwok-service的命名空间。

在此时使用requiring-resolve来加载web.network-service/run会抛出一个异常——并且CLI会告诉您请求的函数不存在。

我觉得此时可以区分nil和异常,并为每种情况提供不同的错误消息(nil表示命名空间已加载但无法解析函数,异常表示命名空间加载失败:它缺失或存在语法错误)。
\"\" 评论了 Sean Corfield
太好了!感谢,Alex!
太好了,谢谢。我将发布后将在此进行回归测试。错误消息显示名称空间应该让打字错误者在脸面上打上。
0

Clojure CLI(clojure --version)的版本是什么?

你是否尝试过使用-Sforce

Clojure CLI版本 1.10.3.933

感谢Sean Corfield,他发现了exec-fn文件中ns声明中的打字错误。我们正在考虑也许这可以通过Clojure CLI来捕获。请查看Sean在评论中的建议。
...