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!")
}