Flutter: целевой файл lib / main.dart не найден

Когда я выполняю пробег с трепетанием, я получаю сообщение об ошибке

Целевой файл "lib / main.dart" не найден.

Почему это происходит и как это исправить?


person Keshav Aditya R.P    schedule 25.05.2018    source источник
comment
Из какого каталога вы выполняете команду. Пожалуйста, добавьте результат flutter doctor к вашему вопросу.   -  person Günter Zöchbauer    schedule 25.05.2018


Ответы (17)


Вы можете запустить любой файл из любого DIR, если вы укажете путь к целевому файлу, например:

flutter run -t lib/main_dev.dart

OR

flutter run lib/dev/main_dev.dart

ОБНОВЛЕНИЕ (5 февраля 2020 г.)

Однако не рекомендуется удалять 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();
}

Оказывается, некоторые шаги сборки не будут выполнены в Android Studio, в основном связанные с Gradle, если у вас нет файла main.dart и метода main () {}, на которые есть ссылка внутри этого файла.


Альтернатива 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"
    }
  ]

Надеюсь это поможет.

person Elroy    schedule 26.10.2018
comment
Ага, все работает как положено. Спасибо! сборка флаттера apk lib / config / env_dev.dart - person atereshkov; 24.02.2019
comment
вторая часть - лучший ответ - person Naman Jain; 23.05.2020
comment
это работает очень хорошо, я сделал с ручным путем. - person Moxet Jan; 21.12.2020

Flutter ищет main.dart в папке lib, в то время как у вас должен быть файл внутри любого другого пакета.

Лучшее решение - поместить ваш main.dart файл в папку lib. Тогда команда Flutter run точно сработает.

У меня сработало.

main.dart URL должен быть:

<app dir>/lib/main.dart
person Munish Thakur    schedule 15.06.2018
comment
Что, если он в другом месте? поскольку я использую разные файлы для создания среды prod и dev. - person Rachit Rawat; 27.09.2018

Если вы используете vscode ...

При возникновении ошибки на боковой панели появляется папка vscode. Внутри него находится файл launch.json.

Вы можете изменить свойство "program": "..." в файле launch.json, чтобы запустить файл .dart в нужном каталоге.

person NewbieCoder    schedule 30.12.2018

Это произошло, когда я использовал Visual Studio Code. Чтобы исправить эту проблему, я отредактировал файл .vscode/launch.json и изменил значение "program" на абсолютный путь к моему main.dart файлу (например, C://...).

person Steve Lukis    schedule 21.01.2019

Итак, в основном, когда вы выполняете это

 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, в противном случае генерировался бы толстый APK, включающий как 32-битные, так и 64-битные двоичные файлы. Дополнительная информация здесь

person Shubhral    schedule 26.08.2020

Если вы используете визуальный код и столкнулись с этой проблемой во время отладки, просто перейдите в launch.json, перейдите в то место, где находится ваше приложение flutter, в папку lib, а затем в main.dart, скопируйте путь и добавьте его в текст программы в файле launch.json, как показано на фотографии ниже

"программный" путь launch.json

person Kefa Mutinda    schedule 03.04.2019

Пользователи VSCode: перейдите к launch.json и замените строку «Программа» следующим:

"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
person Sukhi    schedule 08.04.2019

в студии Android это Wokrs для меня

  1. щелкните левой кнопкой мыши в main.dart
  2. щелкните правой кнопкой мыши в профиле main.dart

это выполняет приложение моментального снимка для настройки корневого профиля для запуска вашего приложения

введите описание изображения здесь

person Robinson Calderón    schedule 01.07.2019

Если вы используете Debug Mode в vs code, убедитесь, что рабочая папка vs code является основной папкой вашего Flutter проекта.

Если вы хотите изменить vs code рабочую папку, вы можете использовать меню File > Open Folder или ярлык Ctrl+O.

Когда я меняю папку, у меня сработало.

person Mehmet Bütün    schedule 28.08.2019

Попробуйте final FlutterDevice flutterDevice = await FlutterDevice.create

Основная причина в том, что ResidentRunner, который мы используем для подключения и выполнения горячей перезагрузки, будет пытаться найти main.dart файл, когда цель не объявлена. Attach не предоставляет цель, поэтому всегда использует поведение по умолчанию. Согласно DaceShuckerow.

Эта проблема все еще присутствует в официальном репозитории.

person champion-runner    schedule 30.10.2019

В моем случае я забыл написать код для вызова main ....

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

И это сработало

person Sanjay Singh    schedule 30.10.2019
comment
Помог с форматированием вашего поста. Пожалуйста, дважды проверьте себя подозрительным Void vs void, потому что я не уверен в фактическом синтаксисе этой технологии. редактировать, если вы согласны с моей догадкой. - person Yunnosch; 30.10.2019

Если вы используете VSCODE

Проверьте папку .vscode> launch.json и добавьте конфигурацию:
если она у вас уже есть, измените "программу": "путь к примеру main.dart: lib / main.dart"

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

person Aminjoni Abdullozoda    schedule 17.11.2019

Если вы используете VSCode, попробуйте этот метод:
Удалите папку .vscode в каталоге вашего проекта и перезапустите программу.

person Augustine Aykara    schedule 07.01.2020

Если у вас несколько схем 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"
            ]
        }]
person Mohammad Zaid Pathan    schedule 11.11.2020

Если кто-то борется с этим, у меня сработало воссоздание папки ios. И -t работает независимо от местоположения цели или имени цели и без необходимости иметь main.dart в вашей папке lib.

Чтобы воссоздать папку ios

  • переименуйте папку ios во что-то вроде ios_old
  • run = ›flutter create fakeApp
  • откройте fakeApp, скопируйте папку ios в свой проект
  • перенести изменения из ios_old (если были изменения)
  • удалить ios_old
person Ali_R    schedule 11.03.2021

У меня было аналогичное сообщение об ошибке, и это произошло из-за того, что я случайно удалил void main ()

person Salah Qamachi    schedule 08.06.2021
comment
Подобно stackoverflow.com/a/58618151/2227743 - person Eric Aya; 09.06.2021

Убедитесь, что ваш main.dart внутри папки lib не находится в другом пакете или каталоге

введите описание изображения здесь

person Mina Farid    schedule 20.07.2021