import 路径使用当中的一个困惑

项目结构略复杂, 原本参考 Rust 有更多嵌套的, 去掉以后还剩两层嵌套,

基于 moon.pkg.jsonimport 定义的引用… 使用下来我理解大致上,

  • 同一个目录同一层的代码是在同一个模块当中, 可以被相互引用的
  • 跨目录层级就需要通过 import 定义规则以后才能被引用到, 且需要指定 pub
  • 参考默认项目, main/ lib/ 模块之间也可以通过 moon.pkg.json 指定 import 引用,

于是我为了从 main/ 当中引用 lib/ 代码, 定义了 lib/main/moon.pkg.json 规则:

{
  "import": [
    { "path": "tiye/respo/lib/node", "alias": "respo_node" },
    { "path": "tiye/respo/lib/web-sys", "alias": "web_sys" },
    { "path": "tiye/respo/lib", "alias": "respo" }
  ]
}

其中 @respo_node @web_sys 可以引用到定义了 pub 的函数, 而 @respo 始终无法引用到内部任何的 pub 的函数. 这个行为比较意外… 有怀疑代码当中报错导致未引用, 但基于另外的模块试验发现报错也不影响函数被引用到.

不知道是理解错了哪个规则… 还有文档可以参照一下么

疑问的项目地址 respo.mbt/src/main/moon.pkg.json at translating · Respo/respo.mbt · GitHub


更新, 有可能是缓存之类原因么, 换个电脑跑不能重现报错了. VS Code 提示 Moonbit 有更新我都允许更新的