我有
.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
以及如何解决此问题。
您仍然需要包含 dotenv 文件。
将“.env”重命名为“dotenv”(请参阅https://github.com/java-james/flutter_dotenv/issues/28)
在加载 dotenv 文件的代码中,指定名称和位置。例如
await dotenv.load(fileName: "./dotenv")
构建后 (
flutter build web
),将 dotenv 文件复制到 build/web
文件夹。