颤动:未找到目标文件“lib / main.dart”

时间:2018-05-25 05:35:26

标签: flutter flutter-dependencies flutter-test

当我执行颤动时,我收到错误

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

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

17 个答案:

答案 0 :(得分:10)

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

flutter run -t lib/main_dev.dart

OR

flutter run lib/dev/main_dev.dart

答案 1 :(得分:3)

如果您使用的是vscode ...

发生错误时,侧边栏中将出现vscode文件夹。它内部具有launch.json文件。

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

答案 2 :(得分:3)

Flutter正在寻找lib文件夹中的main.dart,而你必须在任何其他包中包含文件。

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

这对我有用。

main.dart网址应为:/lib/main.dart

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

launch.json "program" path

答案 5 :(得分:1)

基本上,当您执行此操作

 flutter run

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

因此,如果您的文件存在于/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

答案 6 :(得分:0)

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

enter image description here

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

重新创建ios文件夹

  • 将 ios 文件夹重命名为 ios_old 之类的内容
  • run => flutter create fakeApp
  • 打开fakeApp,将ios文件夹复制到你的项目中
  • 从 ios_old 迁移更改(如果您有任何更改)
  • 删除 ios_old

答案 9 :(得分:0)

如果您有多个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"
            ]
        }]

答案 10 :(得分:0)

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

答案 11 :(得分:0)

如果您使用的是VSCODE

检查文件夹 .vscode> launch.json 并添加配置:
如果已经更改了“程序”:“ main.dart示例的路径:lib / main.dart”

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

答案 12 :(得分:0)

尝试final FlutterDevice flutterDevice = await FlutterDevice.create

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

官方 Repo上仍然存在此问题。

答案 13 :(得分:0)

我的情况是 我忘记编写用于调用main的代码。...

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

并且这样做有效

答案 14 :(得分:0)

在android studio中,这对我来说很幸运

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

这将执行快照操作以配置根配置文件以运行您的应用程序

enter image description here

答案 15 :(得分:0)

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

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

答案 16 :(得分:-1)

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

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

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