E4037

E4037#

无法完成操作:包未导入。

错误示例:#

main/main.mbt 中,我们试图调用 @middle 中的一个函数:

fn main {
  let a = @middle.return_Obj().m()
}

middle/middle.mbt 中,我们定义了一个函数,返回了一个在 @ty 中定义的特征 Obj 的对象:

pub fn return_Obj() -> &@ty.Obj {
  @ty.T(42)
}

ty/ty.mbt 中,我们定义了一个特征 Obj 和一个实现它的类型 T

pub(all) type T Int

pub fn f(self: T) -> Unit {
  println(self._)
}

pub(open) trait Obj {
  f(Self) -> Unit
}

但是在 main/moon.pkg.json 中没有提到 @ty

{
  "import": ["<PACKAGE>/middle"]
}

这会在 main/main.mbt 的第 2 行报错:

无法调用类型为 &@<PACKAGE>/ty.Obj 的方法:包 @<PACKAGE>/ty 未导入。

建议#

确保所有相关的包都已经导入。

在上面的示例中,这意味着在 main/moon.pkg.json 中导入 @middle@ty

{
  "import": ["<PACKAGE>/middle", "<PACKAGE>/ty"]
}