【问题标题】:Webpacker Not Replacing "process.env" Variables When an Environment Is Specified指定环境时,Webpacker 不替换“process.env”变量
【发布时间】: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


【解决方案1】:

解决了!

事实证明,这是由于对 .env 文件的加载方式存在误解。我在.env 文件中定义了值,但在.env.test 文件中没有。我假设它会从我的.env 中提取所有值并覆盖它们,如果值也存在于我的.env.test 中。但显然,它根本不费心从.env 文件中加载任何内容,这就是为什么我只在使用特定的RAILS_ENV 集构建资产时才看到这个问题的原因。

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2018-12-16
    相关资源
    最近更新 更多