Flutter项目启动时无法找到.env文件,求解决方案
Flutter中dotenv加载.env文件失败的问题
代码情况
main函数代码如下:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await dotenv.load(fileName: "./env"); var documentsDirectory = await path_provider.getApplicationDocumentsDirectory(); Hive.init(documentsDirectory.path); Hive.registerAdapter(UserDataModelAdapter()); Hive.registerAdapter(TaskHiveModelAdapter()); runApp(const MyApp()); }
项目配置
项目根目录存在.env文件(目录结构如图:
),且已在pubspec.yaml中配置资源:
assets: - .env
错误信息
构建时抛出错误:
No file or variants found for asset: .env. Error detected in pubspec.yaml: Target debug_android_application failed: Exception: Failed to bundle asset files. FAILURE: Build failed with an exception.
同时dotenv运行时抛出异常:dotenv: Unhandled Exception: Instance of 'FileNotFoundError'
问题
为何Flutter启动时无法找到.env文件?
解决方案
1. 文件名不匹配
代码中dotenv.load指定的文件名是./env,但实际文件是.env,二者不匹配。修改代码中的文件名参数:
await dotenv.load(fileName: ".env");
2. 资源配置未生效
修改pubspec.yaml的资源配置后,需要执行flutter pub get刷新配置,或者直接重启Flutter开发服务,确保资源被正确打包。同时确认.env文件确实和pubspec.yaml处于同一根目录下。
3. 改用Flutter资源加载逻辑
dotenv默认从本地文件系统读取文件,而Flutter的资源是打包到应用中的,二者路径逻辑不同。可以通过Flutter的rootBundle读取资源内容后再传给dotenv,避免路径问题:
import 'package:flutter/services.dart' show rootBundle; // ... final envContent = await rootBundle.loadString('.env'); dotenv.load(envContent: envContent);
内容的提问来源于stack exchange,提问作者Caio
相关产品推荐
相关产品推荐

