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

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

0
ClojureScript

在JavaScript中,当你require一个模块时,你可以省略相对路径中的扩展名。如果这样做,路径是一个目录,并且该目录包含一个index.js文件,那么该文件就会被当作主脚本处理。

因此,这个声明

`javascript
const foo = require('./foo')
`

可以被解析为./foo.js./foo/index.js

模块解析器应该考虑这一点,如果在一个所需目录中解析了index.js,它也应该提供类似的路径,比如以下两种

module$Users$user$Documents$project$node_modules$foo$index module$Users$user$Documents$project$node_modules$foo

实际表现在这里:(链接:cljs-name-to-path-issue)(https://github.com/rangeoshun/cljs-name-to-path-issue)

它在浏览器中产生了以下错误

未定义的nameToPath for module$Users$range$Documents$cljs_name_to_path_issue$node_modules$deat_mui_core$colors

这是因为 node_modules/deat-mui-core/colors/index.js在编译版本中只提供了以下内容

`javascript
goog.provide("module$Users$range$Documents$cljs_name_to_path_issue$node_modules$deat_mui_core$colors$index");
`

如果没有冲突,它也应该提供以下内容

`javascript
goog.provide("module$Users$range$Documents$cljs_name_to_path_issue$node_modules$deat_mui_core$colors");
`

3 个答案

0

评论者:range

对错误标记的Markdown表示歉意 :)

0

评论者:range

请关闭此问题,因为通过查看测试,它似乎已正常工作,所以`lein-cljsbuild`可能在这个依赖项上已经过时。

0
参考: https://clojure.atlassian.net/browse/CLJS-2939 (由 alex+import 报告)
...