首页 > 解决方案 > 将变量从 Rails 应用程序传递到节点包

问题描述

我有一个使用节点包的 Rails 应用程序。我希望能够在运行 rails 服务器时通过设置环境变量来动态设置节点包的配置中的值。所以理想情况下它看起来像这样。

MY_ENV_NUMBER=1 rails s

然后在我的节点应用程序的配置文件中,我可以做类似的事情

myEnvNumber: process.env.MY_ENV_NUMBER

节点包是 rails 应用程序中的依赖项。我不确定是否有更好的方法来做到这一点,但任何在启动时将参数从 rails 应用程序传递到节点包的方法都会很棒。

感谢您的任何帮助!

标签: node.jsruby-on-rails

解决方案


通常,当您使用 Rails 时,node 仅用于构建资产。构建过程结束后,节点不再运行。

您在 app/javascript/packs/*.js 中编写的所有 JavaScript 都在浏览器中运行,而不是在节点中运行。process对象 和process.env不存在于浏览器中。

也许您想要达到的目标可以通过其他方式完成?例如,您可以以某种方式将变量的值写入 dom,然后让 JavaScript 从那里读取它?

例如在 application.html.erb 中:

<input type="hidden" id="MY_ENV_NUMBER" value="<%= ENV['MY_ENV_NUMBER'] %>">

现在这个隐藏字段在您的应用程序的每个页面中都可用


推荐阅读