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

欢迎!有关如何使用此页面的更多信息,请参阅关于页面。

0
ClojureScript
https://script.clojure.org/guides/javascript-modules

hello-es6示例使用目录将{{:module-type}}应用到该目录下的每个文件上。


{:file "src" :module-type :es6}


这会导致{{src/js/hello.js}}被别名化为{{js.hello}}命名空间,而.cljs文件可以{{:require}}。

给定如下目录结构

{:file "lib-a" :module-type :es6}
{:file "lib-b" :module-type :es6}

.
├── lib-a
│   └── js
│       └── hello.js
├── lib-b
│   └── js
│       └── hello.js


这会导致{{lib-b}}无声地替换{{lib-a}},因为它们都声称要使用{{js.hello}}名称。

相同的问题也存在于遵循closure兼容库中,但它们通常遵循某种手动命名空间(例如,goog.string,cljs.core,...),ES6/JS库不做这些(并且不支持给定它们相对于手动导入和绝对导入的使用)

不确定如何处理此问题,但至少应该有一些警告来指出存在冲突别名。

演示: https://github.com/thheller/hello-es6-conflict

1 个答案

0
参考: https://clojure.atlassian.net/browse/CLJS-1995(由thheller报告)
...