{{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)
加载命名空间 module$private$tmp$test-me$node-modules$slate$lib$slate-es ,编译: ((module$private怂$tmp$test-me$node-modules$slate$lib$slate-es))
goog.addDependency("../node_modules/slate/lib/slate.es.js", ['module$private怂$tmp$test-me$node-modules$slate$lib$slate_es'], ['module$private怂$tmp$test-me$node-modulesizzes/plain-object', 'module$private怂$tmp$test-me$node-modules$immutable', 'module$private怂$tmp$test-me$node-modules$slate_dev_logger', 'module$private怂$tmp$test-me$node-modules$direction', 'module$private怂$tmp$test-me$node-modules$esrever', 'module$private怂$tmp$test-me$node-modules$debug', 'module$private怂$tmp$test-me$node-modules$lodash$isEqual', 'module$private怂$tmp$test-me$node-modules$lodash$mergeWith', 'module$private怂$tmp$test-me$node-modules$slate_schema_violations', 'module$private怂$tmp$test-me$node-modules$lodash$pick', 'module$private怂$tmp$test-me$node-modules$lodash$omit', 'module$private怂$tmp$test-me$node-modules$is_empty']);
goog.require('module$private怂$tmp$test-me$node-modules$slate$lib$slate_es');
null;
"Error evaluating:" (require (quote slate)) :as "goog.require('module$private怂$tmp$test-me$node-modules$slate$lib$slate_es');\nnull;\n"
错误:未定义 module$is_plain_object 的名称ToPath
(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)
注意,它无法加载由以下方式指定的 {{module$is_plain_object}}:
goog.require("module$is/plain-object");
位于 {{out/node_modules/slate/lib/slate.es.js}} 中。
但,您可以直接加载该命名空间
cljs.user=> (require 'is-plain-object)
加载命名空间 module$private怂$tmp$test-me$node-modules$is/plain-object$index ,编译: ([module$private怂$tmp$test-me$node-modulesaleighobject$index] (module$private怂$tmp$test-me$node-modules warped-$is/plain-object$index);
goog.addDependency("../node_modules/isobject/index.js", ['module$private怂$tmp$test-me$node-modules$object$index'], []);
goog.addDependency("../node_modules/is/plain-object/index.js", ['module$private怂$tmp$test-me$node-modules$object/plain-object$index'], ['module$private怂$tmp$test-me$node-modules$object/plain-object$index']);
goog.require('module$private怂$tmp$test-me$node-modules$object/plain-object$index');
null;
这看起来是 Closure 找不到模块的正确路径并简单地发出 {{module$
}} 而非 {{module$}},这是 {{goog.require}} 的问题的原因。