You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart Frog项目使用build_runner生成代码失败求助

Dart build_runner 报错"Invoked Dart programs must have a 'main' function defined" 排查方案

问题场景

我在Google Cloud Compute Engine实例上运行dart_frog服务端代码,采用stormberry作为PostgreSQL数据库的ORM(该ORM依赖build_runner生成代码)。此前运行正常,近期仅对业务逻辑做了微小调整并部署到服务器后,执行dart run build_runner build --delete-conflicting-outputs时出现错误:

Building package executable... (44:35.0s)
Built build_runner:build_runner.
Invoked Dart programs must have a 'main' function defined:
https://dart.dev/guides/language/language-tour#a-basic-dart-program

本地笔记本运行相同代码无问题,已尝试重新克隆项目、删除.dart_tool文件夹、执行dart pub get和dart pub cache repair,但问题仍未解决。当前环境:build_runner: ^2.3.3,Dart SDK版本:2.19.6 (stable) (Unknown timestamp) on "linux_x64"

排查与解决步骤

  • 检查项目入口文件完整性
    确认dart_frog服务的入口文件(通常是main.dart或dart_frog约定的入口)中存在有效的void main()函数,避免误操作删除、注释或移动了该函数。

  • 同步依赖版本到服务器
    本地执行dart pub get生成pubspec.lock文件,将该文件同步到服务器后再执行dart pub get,确保本地与服务器的依赖版本完全一致,消除平台差异导致的隐式依赖问题。也可以尝试升级build_runner到兼容Dart 2.19.6的最新稳定版:

    dart pub upgrade build_runner
    
  • 验证服务器Dart环境
    执行dart --version确认SDK版本无误,创建一个极简Dart测试文件(如下)运行dart run,验证环境本身是否能正常识别main函数:

    void main() {
      print("Test main function");
    }
    
  • 彻底清理缓存与生成文件
    执行以下命令深度清理后重新尝试构建:

    dart run build_runner clean
    rm -rf build/
    rm -rf .dart_tool/
    dart pub get
    dart run build_runner build --delete-conflicting-outputs
    
  • 定位stormberry生成代码问题
    暂时注释掉项目中stormberry相关的注解与代码,运行build_runner看是否仍报错。若不再报错,说明是stormberry在Linux环境下的代码生成出现异常,可检查实体类注解是否正确,或尝试升级stormberry版本。

内容的提问来源于stack exchange,提问作者Damien Leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:30:17