簡體   English   中英

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

[英]Flutter : Target file "lib/main.dart" not found

當我執行flutter 運行時出現錯誤

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

為什么會發生這種情況,我該如何解決?

您可以從任何 DIR 運行任何文件,前提是您設置了目標文件路徑,例如:

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 構建等)
  • 以下與顫振構建錯誤相關的更多信息/解決方案:以非零退出值 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"
    }
  ]

希望這可以幫助。

Flutter 正在lib文件夾中查找main.dart ,而您必須在任何其他包中都有文件。

最好的解決方案是將main.dart文件放在lib文件夾中。 Flutter run 命令肯定會起作用。

它對我有用。

main.dart網址應該是:

<app dir>/lib/main.dart

如果您使用的是 vscode...

出現錯誤時,vscode文件夾出現在側邊欄中。 它里面有launch.json文件。

您可以更改 launch.json 文件中的"program": "..."屬性,以在所需目錄中運行 .dart 文件。

這發生在我使用 Visual Studio Code 時。 我為解決這個問題所做的是通過編輯.vscode/launch.json文件並將"program"的值更改為我的main.dart文件的絕對路徑(例如C://... )。

所以基本上當你執行這個

 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。 更多信息在這里

如果你使用的是可視化代碼並且在調試時遇到這個問題,只需轉到launch.json,轉到你的flutter應用程序所在的位置,到lib文件夾然后到main.dart,復制路徑然后添加如下圖所示,將其添加到launch.json中的文本程序

launch.json“程序”路徑

VSCode 用戶:請導航到 launch.json 並將“Program”行替換為以下內容:

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

在 android studio 中,這對我來說是可行的

  1. 在 main.dart 中左鍵單擊
  2. 右鍵單擊配置文件 main.dart

這將執行快照應用程序以配置根配置文件並運行您的應用程序

在此處輸入圖片說明

如果您在vs code中使用Debug Mode ,請確保vs code工作文件夾是您的Flutter項目主文件夾。

如果要更改vs code工作文件夾,可以使用“ File > Open Folder菜單或Ctrl+O快捷鍵。

當我更改文件夾時,它對我有用

我的情況是我忘記編寫調用 main 的代碼......

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

這樣做有效

嘗試final FlutterDevice flutterDevice = await FlutterDevice.create

根本原因是我們用來附加和熱重載的ResidentRunner會在目標未宣布時嘗試查找main.dart文件。 Attach 不提供目標,因此它始終使用默認行為。 根據DaceShuckerow

這個問題仍然存在於官方Repo 上

如果您使用的是 VSCODE

檢查文件夾.vscode>launch.json並添加配置:
如果您已經更改了“程序”:“main.dart 示例的路徑:lib/main.dart”

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

如果您使用的是VSCode嘗試以下方法:
刪除項目目錄中的.vscode文件夾並重新運行程序。

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

如果有人為此苦苦掙扎,對我有用的是重新創建 ios 文件夾。 無論目標的位置或目標的名稱如何, -t 都可以工作,並且不需要在 lib 文件夾中包含 main.dart。

重新創建ios文件夾

  • 將 ios 文件夾重命名為類似 ios_old 的名稱
  • 運行 => flutter 創建 fakeApp
  • 打開 fakeApp,將 ios 文件夾復制到你的項目中
  • 從 ios_old 遷移更改(如果您有任何更改)
  • 刪除 ios_old

我有一個類似的錯誤信息,這是因為我不小心刪除了 void main()

確保 lib 文件夾中的main.dart直接不在另一個包或目錄中

在此處輸入圖片說明

我認為您已經更改了 main.dart 的路徑。如果是這樣,您可以將 main.dart 文件拖放到 lib 文件夾中。(lib/main.dart)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM