尝试加载资源时出错:Flutter Web 引擎无法获取“assets/.env”

问题描述 投票:0回答:1

我有

.env
文件并使用
flutter web
部署了
github workflow

由于 .env 文件被

.gitignore
忽略,我尝试通过向 github
Secret Actions
添加值来手动添加 .env 文件,然后编写脚本工作流程.yml,如下所示。

workflow.yml

      - name: Create.env
        shell: bash
        env:
          SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
          SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}
        run: |
          touch .env
          echo SUPABASE_URL=${{ secrets.SUPABASE_URL }} >> .env
          echo SUPABASE_ANONKEY=${{ secrets.SUPABASE_ANONKEY }} >> .env
          cat .env

我评论

.env
来自
pubspec.yml

  assets:
    # - .env
    - assets/images/
    - assets/app_intro/
    - assets/app_screen/

如果我不将此视为注释,则在使用 github 部署 Web 时会抛出错误,如下错误消息。

为 Web 编译 lib/main.dart... 否 找到资产的文件或变体:.env。检测到错误 pubspec.yaml:

我在代码中使用这些秘密值,如下所示。

   await dotenv.load();

    final supabaseUrl = dotenv.env["SUPABASE_URL"];
    final supabaseAnonKey = dotenv.env["SUPABASE_ANONKEY"];

    if (supabaseUrl == null || supabaseAnonKey == null) {
      throw Exception("Supabase URL or Anon Key is not provided");
    }

    await Supabase.initialize(
      url: supabaseUrl,
      anonKey: supabaseAnonKey,
    );

build
已成功完成。

但是当我打开网页时,它会抛出错误。

main.dart.js:9456 尝试加载资源时出错:Flutter Web 引擎无法获取“assets/.env”。 HTTP 请求成功,但是 服务器响应 HTTP 状态 404。

我不明白为什么它尝试从

assets/.env
获取,而不是
.env
以及如何解决此问题。

flutter github workflow
1个回答
0
投票

您仍然需要包含 dotenv 文件。

  1. 将“.env”重命名为“dotenv”(请参阅https://github.com/java-james/flutter_dotenv/issues/28

  2. 在加载 dotenv 文件的代码中,指定名称和位置。例如

    await dotenv.load(fileName: "./dotenv")

  3. 构建后 (

    flutter build web
    ),将 dotenv 文件复制到
    build/web
    文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.