【问题标题】:can not load dotEnv file from assets in released app无法从发布的应用程序中的资产加载 dotEnv 文件
【发布时间】:2023-01-15 01:46:10
【问题描述】:

我在项目的根目录中创建了一个 dotEnv 文件,并将该文件添加到 pubspec.yaml 文件中,如下所示:

  assets:
    - dotEnv.develop

然后我以这种方式在 main.dart 文件中引用它:

void main() async{
  await dotenv.load(fileName: "dotEnv.develop");

  runApp(const MyApp());
}

但是发布的应用程序找不到 dotEnv.develop 文件,但是它存在于 assets 文件夹中,如下图所示:

在 chrome 的控制台中我得到这个错误:

main.dart.js:41783 Error while trying to load an asset: Failed to load asset at "assets/dotEnv.develop" (404)
Failed to load resource: the server responded with a status of 404 (Not Found)

现在我的 flutter sdk 版本是 3.0.5

【问题讨论】:

  • 您使用的是哪个 dot-env 包?另外,您如何加载 dotEnv.develop 文件(源代码)?
  • 我使用 flutter_dotenv 5.0.2 并在 main() 中使用它:` await dotenv.load(fileName: "assets/dotEnv.develop");`
  • 在生产应用程序的纯文本文件中包含环境机密是不好的做法。您应该使用 --dart-define 将环境变量传递给您的生产构建。

标签: flutter flutter-web


【解决方案1】:

问题是 dotEnv.develop 位于根文件夹中,而您正试图从 assets 文件夹中加载它。

代替:

await dotenv.load(fileName: "assets/dotEnv.develop");

请改为执行以下操作:

await dotenv.load(fileName: "dotEnv.develop");

【讨论】:

  • 谢谢,但我也试过了,我将文件复制并粘贴到rootassetsassets/assets,我更改了引用await dotenv.load(fileName: "...");,404错误仍然存​​在,但是位置错误说,文件在那里!
  • 你试过flutter clean然后flutter pub get吗?
  • 是的,我试过了。
  • 奇怪...在我的机器上测试它可以在以发布模式构建的网络平台上运行。你可以edit你的问题并添加minimal-reproducible-example吗?
  • 会不会和flutter sdk的版本有关?现在是 2.10.4
【解决方案2】:

在项目的根目录中创建一个 .env 文件 并写在上面

API_URL=localhost:3000

然后将 .env 文件添加到 pubspec.yaml

assets:
- .env

这是resource

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2019-02-20
    • 2022-01-24
    • 2021-02-27
    相关资源
    最近更新 更多