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

欢迎!请查看关于页面获取有关如何使用本功能的更多信息。

0
ClojureScript

目前我们不验证`:global-exports`。它必须将已知的提供映射到表示JavaScript全局变量的某个符号。

3 个答案

0
_评论者:mfikes_

注意,附加的补丁进行了一项有点超出工单范围的变化:在{{:provides}}是隐式的情况下(因为{{:file}}代表一个目录),并且指定了{{:global-exports}},前一段代码会将整个全局导出映射复制到生成的每个 foreign lib 规范中。我们已经将其修订为仅复制相关的子映射。当生成扩展时,这似乎是正确的事情,但使用新的验证逻辑时也是必要的:如果没有这个改变,任何非相关全局导出发生并复制时会导致验证逻辑得出结果,认为有缺失的提供。

例如


{:file "libs"
 :global-exports {foo foo-g bar bar-g}}


将扩展为几个 lib 规范,每个“libs”中找到的文件一个,先前的实现会将整个映射复制到每个中。修订后的代码只复制子映射


:global-exports {foo foo-g}


到与{{:file "libs/foo.js"}}相关的规范。

示例验证消息

显式情况


java.lang.Exception: 外部库全局导出未提供:["missing-lib" "another-lib"] 未在{:file "libs/mylib.js", :provides ["my-lib"], :global-exports {my-lib mylib, missing-lib missing, another-lib another}}中找到
...


显式情况,带有命名空间


java.lang.Exception: 外部库全局导出未提供:["missing-lib" "another-ns/another-lib"] 未在{:file "libs/mylib.js", :provides ["some-ns/my-lib"], :global-exports {some-ns/my-lib mylib, missing-lib missing, another-ns/another-lib another}}中找到
...


隐式(目录)情况,仅存在libs/other.js


java.lang.Exception: 外部库全局导出未隐式提供。文件["libs/missing.js" "libs/another.js"]未找到与库规范{:file "libs", :global-exports {other other-g, missing missing-g, another another-g}}相关
...


0

评论由:mfikes

将CLJS-2781.patch添加到补丁请求中(i)

0
参考:[https://clojure.atlassian.net/browse/CLJS-2781](https://clojure.atlassian.net/browse/CLJS-2781)(由dnolen报告)
...