Flutter: 找不到目标文件“lib/main.dart”

59
当我执行 flutter run 命令时,出现了错误。
目标文件 "lib/main.dart" 没有找到。
这是为什么,我该如何解决?

你在哪个目录下执行了该命令?请将 flutter doctor 命令的输出添加到你的问题中。 - Günter Zöchbauer
18个回答

103

你可以从任何目录运行任何文件,只要设置目标文件路径,例如:

flutter run -t lib/main_dev.dart

或者

flutter run lib/dev/main_dev.dart

更新(2020年2月5日)

然而,不建议从项目中删除main.dart

我相信大多数人都会因为设置/配置应用程序以适应不同环境(例如dev、stg、beta和prod)而找到此链接。

示例:

main_dev.dart:

void main() async {
  dynamic configuredApp = AppConfig(
    appName: 'Flutter',
    flavorName: 'development',
    appVersion: 1.0,
    apiBaseUrl: 'https://dev-api.example.com/'
  );

  runApp(App(configuredApp));
}

main.dart

class App extends StatefulWidget {
  final dynamic configuredApp;

  App(this.configuredApp);

  @override
  _AppState createState() => _AppState();
}

事实证明,如果没有在main.dart文件中引用main() {}方法,则Android Studio中的一些构建步骤将失败,主要与Gradle有关。

  • 常见构建错误(AndroidX迁移、APK构建等)
  • 更多信息/解决方案,请参见下面与flutter构建错误相关的内容:以非零退出值1结束
  1. 问题评论
  2. 问题评论
  3. 问题评论

使用VS Code的调试工具,替代flutter run -t lib/main_dev.dart

  • 点击“添加配置”,添加以下内容或手动添加:

.vscode/launch.json

  "configurations": [

    {
      "name": "Flutter",
      "request": "launch",
      "type": "dart",
      // "args": ["--enable-software-rendering"]
      // "flutterMode": "profile", //debug //release 
      "program": "${workspaceFolder}/lib/main_dev.dart"
    }
  ]

2
没错,它按预期工作。谢谢!flutter build apk lib/config/env_dev.dart - atereshkov
第二部分是最佳答案。 - Naman Jain
这个非常好用,我手动设置路径就可以了。 - Moxet Jan
问题评论已经为我解决了。谢谢! - Furkan Cetintas
如果有人遇到文件找不到的问题,请将其更改为:"./lib/staging_main.dart"。 - Rafsan Uddin Beg Rizan

17

Flutter在寻找位于lib文件夹中的main.dart,但你可能已经将文件放在了其他包中。

最好的解决方案是将main.dart文件直接放在lib文件夹中。这样,Flutter运行命令就可以确保正常工作。

它对我起作用了。

main.dart的URL应该是:

<app dir>/lib/main.dart

10
如果它在另一个位置呢?因为我使用不同的文件来构建我的生产和开发环境。 - Rachit Rawat

9

基本上当你执行这个命令时

 flutter run

Flutter试图在/lib目录中找到main.dart文件。

因此,如果您有一个存储在/lib目录的某个其他子目录中或具有不同名称(如result_page.dart)的文件,则会遇到此错误。 现在,很多答案建议将您的文件重命名为main.dart或直接将其移动到/lib目录下。

但实际上,您可以通过提供当前目录到目标文件的路径来简单地运行任何文件,就像这样 -

flutter run --target=lib/customization/result_screen.dart

那么这将会执行位于名为customization的某个子目录下的result_screen.dart文件。

您也可以按照相同的逻辑生成APK文件,命令如下 -

flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64

其中--target-platform=android-arm64是可选的,适用于64位Android设备,有助于减小APK大小,否则将生成包含32位和64位二进制文件的fat APK。更多信息请参见此处


3

确保你的 main.dart 文件在 lib 文件夹中,而不是其他包或目录中。

enter image description here


3

如果您正在使用vscode...

当出现错误时,侧边栏中会出现vscode文件夹。其中包含launch.json文件。

您可以在launch.json文件中更改"program":"..."属性,以在所需目录中运行.dart文件。


3
这是我使用 Visual Studio Code 时出现的问题。解决方法是编辑 .vscode/launch.json 文件,并将 "program" 的值更改为我的 main.dart 文件的绝对路径(例如 C://...)。

3

如果您正在使用VSCODE

请检查文件夹.vscode>launch.json并添加配置:
如果已经有配置,请更改"program": "main.dart的路径,例如:lib/main.dart"

 {
    "name": "Dart",
    "type": "dart",
    "request": "launch",
    "program": "lib/main.dart"
},


2
如果您正在使用Visual Code并在调试时遇到此问题,只需转到launch.json,转到您的Flutter应用程序所在的位置,然后转到lib文件夹,再转到main.dart,复制路径,然后将其添加到如下所示的launch.json中的文本program,在下面的照片中指示

launch.json "program"路径


2
如果你有多个iOS schemes,那么你可以尝试这样做:
flutter run --flavor UserDev -t lib/user/dev/main_dev.dart
其中,
"configurations": [{
            "name": "User-Dev",
            "request": "launch",
            "type": "dart",
            "program": "lib/user/dev/main_dev.dart",
            "args": [
                "--flavor",
                "UserDev"
            ]
        }]

1
在Android Studio中,这对我很有效。
  1. 在main.dart中左键单击。
  2. 在profile main.dart中右键单击。
这将执行快照应用程序以配置根配置文件并运行您的应用程序。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接