【问题标题】:Flutter : Target file "lib/main.dart" not foundFlutter:找不到目标文件“lib/main.dart”
【发布时间】:2018-11-04 10:29:48
【问题描述】:

当我执行 flutter 运行时出现错误

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

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 你从哪个目录执行命令。请将flutter doctor 的输出添加到您的问题中。

标签: flutter flutter-dependencies flutter-test


【解决方案1】:

只要您设置了目标文件路径,您就可以从任何 DIR 运行任何文件,例如:

flutter run -t lib/main_dev.dart

flutter run lib/dev/main_dev.dart

更新(2020 年 2 月 5 日)

但不建议从您的项目中删除 ma​​in.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 构建等)
  • 以下与颤振构建错误相关的更多信息/解决方案:以非零退出值 1 结束

    1. issuecomment
    2. issuecomment
    3. issuecomment

flutter run -t lib/main_dev.dart 的替代品 在 VS Code 中使用调试器工具。

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

.vscode/launch.json

  "configurations": [

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

希望这会有所帮助。

【讨论】:

  • 是的,它按预期工作。谢谢! flutter build apk lib/config/env_dev.dart
  • 第二部分是最佳答案
  • 这很好用,我用手动路径做了。
  • 3.问题评论为我解决了。谢谢!
【解决方案2】:

Flutter 正在 lib 文件夹中寻找 main.dart,而您必须在任何其他包中都有文件。

最好的解决方案是将您的main.dart 文件放在lib 文件夹中。 Flutter run 命令肯定会起作用。

它对我有用。

main.dart 网址应该是:

<app dir>/lib/main.dart

【讨论】:

  • 如果它在另一个位置怎么办?因为我使用不同的文件来构建我的产品和开发环境。
【解决方案3】:

所以基本上当你执行这个时

 flutter run

Flutter 尝试在 /lib 目录中查找 main.dart

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

但您实际上可以简单地运行任何文件,只需像这样提供当前目录中的目标文件路径 -

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

所以这将简单地执行我的 result_screen.dart 文件,该文件位于名为 customization 的其他子目录下。

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

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

其中--target-platform=android-arm64 是可选的,适用于 64 位 Android 设备,这有助于减少 APK 大小,否则会生成包含 32 位和 64 位二进制文​​件的胖 APK。更多信息here

【讨论】:

    【解决方案4】:

    如果你使用的是 vscode...

    发生错误时,vscode文件夹出现在侧边栏中。它里面有launch.json文件。

    您可以更改launch.json文件中的"program": "..."属性以在您想要的目录中运行.dart文件。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        如果您使用可视化代码并且在调试时遇到此问题, 只需转到launch.json,转到您的flutter应用程序所在的位置,到lib文件夹,然后到main.dart,复制路径然后将其添加到文本program中launch.json 如下图所示

        launch.json "program" path

        【讨论】:

          【解决方案7】:

          在 android studio 中为我工作

          1. 在 main.dart 中单击鼠标左键
          2. 在配置文件 main.dart 中单击鼠标右键

          这会执行快照应用程序来配置根配置文件以运行您的应用程序

          【讨论】:

            【解决方案8】:

            如果你使用的是 VSCODE

            检查文件夹 .vscode>launch.json 并添加配置:
            如果你已经改变了 "program": "path of main.dart example: lib/main.dart"

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

            【讨论】:

              【解决方案9】:

              我有一个类似的错误信息,它的发生是因为我不小心删除了 void main()

              【讨论】:

              【解决方案10】:

              确保您的 main.dart 直接在 lib 文件夹中,而不是在另一个包或目录中

              【讨论】:

                【解决方案11】:

                VSCode 用户:请导航到 launch.json 并将“程序”行替换为以下内容:

                "Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
                

                【讨论】:

                  【解决方案12】:

                  如果您在vs code 中使用Debug Mode,请确保vs code 工作文件夹是您的Flutter 项目主文件夹。

                  如果要更改vs code 工作文件夹,可以使用File &gt; Open Folder 菜单或Ctrl+O 快捷方式。

                  当我更改文件夹时,它对我有用

                  【讨论】:

                    【解决方案13】:

                    试试final FlutterDevice flutterDevice = await FlutterDevice.create

                    根本原因是我们用来附加和执行热重载的 ResidentRunner 会在未宣布目标时尝试查找main.dart 文件。 Attach 不提供目标,因此它始终使用默认行为。根据DaceShuckerow

                    官方Repo上依然有这个问题。

                    【讨论】:

                      【解决方案14】:

                      我的情况是什么 我忘了写调用main的代码......

                      void main()
                      {
                        runApp......
                      }
                      

                      这样做很有效

                      【讨论】:

                      • 我帮助您排版了您的帖子。请仔细检查可疑的“Void”与“void”,因为我不太确定这项技术的实际语法。 edit 以防你同意我的预感。
                      【解决方案15】:

                      如果您有多个 iOS 方案,那么您可以这样尝试:

                      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"
                                  ]
                              }]
                      

                      【讨论】:

                        【解决方案16】:

                        如果有人为此苦苦挣扎,对我有用的是重新创建 ios 文件夹。无论目标的位置或目标的名称如何,-t 都可以工作,并且不需要在您的 lib 文件夹中包含 main.dart。

                        重新创建ios文件夹

                        • 将 ios 文件夹重命名为 ios_old 之类的名称
                        • 运行 => 颤振创建 fakeApp
                        • 打开fakeApp,将ios文件夹复制到你的项目中
                        • 从 ios_old 迁移更改(如果您有任何更改)
                        • 删除 ios_old

                        【讨论】:

                          【解决方案17】:

                          如果您使用的是VSCode,请尝试以下方法:
                          删除项目目录中的 .vscode 文件夹并重新运行程序。

                          【讨论】:

                            猜你喜欢
                            • 2021-11-19
                            • 2021-08-23
                            • 2020-11-16
                            • 2020-11-28
                            • 2021-09-09
                            • 2020-12-05
                            • 2021-06-12
                            • 2021-02-19
                            • 2022-08-22
                            相关资源
                            最近更新 更多