【发布时间】:2013-07-09 02:38:19
【问题描述】:
我正在编写一个 socket.io 应用程序,每次我从
推送到 heroku 时,我都不得不在前端的 scripts.js 文件中添加一行,这让我很恼火var socket = io.connect('http://localhost');
到
var socket = io.connect('http://ersatz-elephant-1337.herokuapp.com/');
我知道我可以使用process.env.VAR 在后端访问这些变量,但我想知道是否有任何方法可以以编程方式确定在我的前端脚本中使用哪个变量?除此之外,我宁愿将脚本保留为静态,但也许这是不可能的?
编辑:我并不是真的在后端寻找解决方案......我正在寻找一种方法,我的 /public/scripts.js 文件可以连接到正确的东西。我想也许唯一的方法是在 server.js 中为前端脚本文件指定一些特殊的东西,而不是静态地提供它,但如果是这样,那么这就是我正在寻找的指令,而不是如何实际访问服务器上的环境变量。如有任何混淆,请见谅!
【问题讨论】:
-
您的问题尚不清楚何时确定要推送到哪个,无论是在执行期间还是在执行前。您是在脚本运行时决定哪条路径还是事先知道?
-
嗯,预执行。就像它是一个静态文件一样,它只需要在 heroku 上与本地不同。
-
我个人建议在这种情况下使用运行时参数。我不喜欢使用环境变量,它总是很乱。如果您使用运行时参数,那么您可以随时使用 shell 脚本来利用环境变量。不过,这更像是个人品味。
标签: node.js heroku socket.io localhost environment-variables