【发布时间】:2020-08-03 05:23:20
【问题描述】:
我依靠 Webpacker 在构建时将我的 process.env 变量转换为实际值。当我运行bin/rails webpacker:compile 执行此操作时,一切都按预期工作。像这样的:
initialize({apiKey:process.env.MY_API_KEY})
... 正确地变成了这样的东西:
initialize({apiKey:"some-api-key-string"})
但是,当运行以特定环境(任何环境)为前缀的相同命令时,替换不起作用。
命令: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 被关闭时,它会按预期工作。
提前致谢!
【问题讨论】:
-
MY_API_KEY 在哪里/如何设置?你在使用 dotenv-rails 之类的东西吗?
-
是的,它设置在我的
.env文件中,我可以使用ENV["MY_API_KEY"]在应用程序的其他任何地方很好地引用它(比如将其打印到.erb模板中)并用 JS 从window对象中抓取它,这是我在走这条路线之前最初所做的)。 -
你使用的是什么版本的 Webpacker 和 @rails/webpacker? .env.test 中有什么东西吗?运行 RAILS_ENV=test rails 控制台时 MY_API_KEY 是什么?
-
这个评论的好时机!事实证明,我的
.env.test文件中没有设置该值,这就是它没有被替换的原因。感谢您提供帮助!
标签: ruby-on-rails webpack webpacker