The {{slate}} npm 依赖项依赖于 {{is-plain-object}} 但无法加载。使用以下命令启动 REPL
clojure -m cljs.main -co '{:npm-deps {"react" "15.5.4" "react-dom" "15.5.4" "slate" "0.33.6" "immutable" "3.8.2"} :install-deps true :repl-verbose true}' -d out -r
(注意,上面的例子中我们使用的是默认浏览器 REPL;如果指定 {{-re node}},则问题不会出现。)
然后,在 REPL 启动并运行之后
cljs.user=> (require 'slate)
load-namespace module$privateaxyx_test-me$node_modules$slate$lib$slate_es , compiled: ((module$privateaxyx_test-me$node_modules$slate$lib$slate_es)))
goog.addDependency("../node_modules/slate/lib/slate.es.js", ['module$privateaxyx_test-me$node_modules$slate$lib$slate_es'], ['module$is/plain/object', 'module$immutable', 'module$slate_dev_logger', 'module$direction', 'module$esrever', 'module$debug', 'module$lodash_isEqual', 'module$lodash_mergeWith', 'module$slate_schema_violations', 'module$lodash_pick', 'module$lodash_omit', 'module$is_empty']);
goog.require('module$privateaxyx_test-me$node_modules$slate$lib$slate_es');
null;
"Error evaluating:" (require (quote slate)) :as "goog.require('module$privateaxyx_test-me$node_modules$slate$lib$slate_es');\nnull;\n"
错误:未定义名称 ToPath 适用于模块,module$is/plain/object
(out/goog/base.js:1357:26)
(out/goog/base.js:1369:14)
(out/goog/base.js:706:27)
require (out/clojure/browser/repl.cljs:340:25)
注意,它无法加载指定通过在 {{out/node_modules/slate/lib/slate.es.js}} 中包含
goog.require("module$privateaxyx_test-me$node_modules$slate$lib$slate_es");
的 {{module$privateaxyx_test-me$node_modules$slate$lib$slate_es}}.
但是,您可以直接加载该命名空间
cljs.user=> (require 'is-plain-object)
load-namespace module$privateaxyx_test-me$node_modules$iso$index , compiled: ([module$privateaxyx_test-me$node_modules$iso$index] (module$privateaxyx_test-me$node_modules$iso$index)))
goog.addDependency("../node_modules/isobject/index.js", ['module$privateaxyx_test-me$node_modules$iso$index'], [])
goog.addDependency("../node_modules/is-plain-object/index.js", ['module$privateaxyx_test-me$node_modules$iso$index'], [])
goog.require('module$privateaxyx_test-me$node_modules$iso$index');
null;
这看起来是 Closure 无法找到模块的正确路径并仅仅发出 {{module$
}} 而不是 {{module$}} 问题。