E4069

E4069#

非 main 包中出现 main 函数。

在 MoonBit 中,包分为两类:主包和非主包。非主包通常用作库,为其他包提供功能。另一方面,主包是程序的入口点。因此,非主包不应该包含 main 函数。

有时,人们使用 main 函数进行测试。在这种情况下,我们建议使用测试块来编写测试,而不是使用 main 函数。有关更多信息,请参阅 MoonBit 文档的 测试部分

错误示例#

假设在包 lib 中:

lib/moon.pkg.json:

{} // "is-main" is by default false

lib/lib.mbt:

fn main { // Error: Unexpected main function in the non-main package.
  println("Hello, world!")
}

建议#

您可以从非主包中删除 main 函数:

// Remove the main function
//- fn main {
//-   println("Hello, world!")
//- }

或者,您可以通过在包配置文件中将 "is-main" 设置为 true 来将包设置为主包。

lib/moon.pkg.json:

{
  "is-main": true
}

你也可以将 main 函数移动到另一个包中,比如 main

main/moon.pkg.json:

{
  "is-main": true
}

main/main.mbt:

fn main {
  println("Hello, world!")
}