我依赖Webpacker在构建时将process.env
变量转换为实际值。当我运行bin/rails webpacker:compile
来执行此操作时,一切都按预期进行。类似这样的东西:
initialize({apiKey:process.env.MY_API_KEY})
正确地变成了这样的东西:
initialize({apiKey:"some-api-key-string"})
但是,当运行以特定环境(ANY环境(为前缀的同一命令时,替换将不起作用。
命令:RAILS_ENV=test bin/rails webpacker:compile
我只剩下这样的东西:
initialize({apiKey:t.env.MY_API_KEY})
我的webpacker.yaml
文件包含我指定的每个环境。在这个特定的例子中,它回到默认设置:
test:
<<: *default
我有没有遗漏一件显而易见的事情?我还通过运行bin/rails assets:precompile
验证了这一点。如果指定了RAIS_ENV
,则不会替换process.env
字符串。当环境关闭时,它会按预期工作。
提前感谢!
已解决!
事实证明,这是由于对.env
文件加载方式的误解。我在.env
文件中定义了该值,但在.env.test
文件中没有定义。我假设它会从我的.env
中提取所有值,并覆盖它们(如果值也存在于.env.test
中(。但显然,它根本不需要从.env
文件中加载任何内容,这就是为什么我只在构建具有特定RAILS_ENV
集的资产时看到这个问题。