使用 lein 为 clojure 项目添加依赖项

Zen*_*Zen 2 dependencies clojure leiningen clojurescript reagent

尽管将所需的依赖项添加到我的 project.clj 文件中,

(defproject word-tree "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}

  :dependencies [[org.clojure/clojure "1.10.1"]
                 [org.clojure/clojurescript "1.10.520"]
                 [clojure-opennlp "0.5.0"] ; <----------------------here
                 [reagent "0.8.1"]]
 ...
Run Code Online (Sandbox Code Playgroud)

我无法访问依赖项提供的功能。

在我的一个文件中引用命名空间后,

(ns word-tree.suffix-tree
  (:require [clojure.string :as str]
            [opennlp.nlp :as nlp])) ; <-----this is the namespace of the dependency
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

没有这样的命名空间:opennlp.nlp,找不到 opennlp/nlp.cljs、opennlp/nlp.cljc 或提供“opennlp.nlp”的 JavaScript 源

最奇怪的是,当我运行lein deps :tree依赖项时出现了!

$ lein deps :tree
...
[cider/piggieback "0.4.1" :scope "test"]
 [cljfmt "0.5.7"]
   [rewrite-clj "0.5.2"]
   [rewrite-cljs "0.4.3"]
 [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]
 [clojure-opennlp "0.5.0"] <------------------------------------------------here!!!
   [instaparse "1.4.9"]
   [org.apache.opennlp/opennlp-tools "1.9.0"]
 [figwheel-sidecar "0.5.19" :scope "test"]
...
Run Code Online (Sandbox Code Playgroud)

对于我的项目,我真的很想使用此依赖项,但它不起作用。任何建议将是最受欢迎的。谢谢。

Den*_*ida 5

在我看来,问题在于该库仅适用于 JVM 上的 Clojure,而您正试图在 ClojureScript 项目中使用它。

没有这样的命名空间:opennlp.nlp,找不到 opennlp/nlp.cljs、opennlp/nlp.cljc 或提供“opennlp.nlp”的 JavaScript 源

编译器试图寻找 ClojureScript 代码(扩展名.cljs)或与 Clojure 和 ClojureScript(扩展名.cljc)或普通 JavaScript兼容,但没有找到。