Dotenv变量加载失败:API请求无法获取环境变量值
解决Dotenv变量读取为空的问题
1. 变量名不匹配(核心问题)
你在.dotenv文件里配置的是MOVIE_API=<密钥>,但代码中调用的是ENV["MOVIE_DB"],两者变量名完全不一致。请二选一修改:
- 把
.dotenv里的变量名改为MOVIE_DB=<密钥> - 把代码里的
ENV["MOVIE_DB"]替换为ENV["MOVIE_API"]
2. 规范Dotenv加载时机
在Rails项目中,Dotenv::Railtie.load需要放在config/application.rb的正确位置,确保在其他代码加载前执行。示例写法:
# config/application.rb require_relative "boot" require "rails/all" # 加载Dotenv,放在Bundler.require之前 Dotenv::Railtie.load Bundler.require(*Rails.groups) module YourAppName class Application < Rails::Application # 其他项目配置 end end
3. 移除Model中冗余的Dotenv引用
models/movie_api.rb里不需要重复require 'dotenv'——Rails已经通过Railtie完成了全局加载,重复引用可能导致加载异常,直接删除这行即可。
4. 检查.dotenv文件格式
确保文件没有语法错误:
- 变量名与值之间不要加空格,正确写法:
MOVIE_DB=your_api_key,错误写法:MOVIE_DB = your_api_key - 密钥本身不含特殊字符时,不要加引号
内容的提问来源于stack exchange,提问作者Benjamin Sunderland
相关产品推荐
相关产品推荐

