Node.js 永远带有环境变量
Posted
技术标签:
【中文标题】Node.js 永远带有环境变量【英文标题】:Node.js forever with environment variable 【发布时间】:2013-01-15 02:21:23 【问题描述】:我在服务器上运行以启动我的节点应用程序的命令是:
sudo IS_PROD=1 node app.js
我已经永远安装了,但似乎无法传入环境变量。
sudo IS_PROD=1 forever node app.js
似乎没有办法。我已经尝试了几个品种。如何成功执行此命令或永久设置环境变量?
【问题讨论】:
【参考方案1】:app.js:
console.log(process.env.IS_PROD);
使用node
(v0.8.21)
$ node app.js
undefined
$ IS_PROD=1 node app.js
1
$ sudo IS_PROD=1 node app.js
1
使用forever
(v0.10.0)
$ forever app.js
undefined
$ IS_PROD=1 forever app.js
1
$ sudo IS_PROD=1 forever app.js
1
Documentation:
process.env
包含用户环境的对象。参见环境(7)。
【讨论】:
这段代码也应该测试进程是否被永远杀死并重新启动,然后检查变量是否仍然存在 imo :)【参考方案2】:首先你应该跳过你命令中的node
东西,它不应该在那里,你不应该能够执行它。 forever 使用nodejs 自动启动您的脚本。相反,您应该这样做;
sudo IS_PROD=1 forever app.js
您可能不想在前台启动您的服务器,而是希望将您的服务器作为一个守护进程启动。例如。
sudo IS_PROD=1 forever start app.js
这将在后台创建一个进程,该进程将监视您的节点应用程序并在它退出时重新启动它。如需更多信息,请参阅readme。
这两种方法都保留了环境变量,就像您只使用 node
时一样。
【讨论】:
我有一个小问题,因为我假设这个 env var 在每次服务器重启时都会被永久保存,我可以通过某种方式为重启而不是第一次启动传递一个不同的变量。我只想在第一次启动时做一些文件写入(Uglifying),而不是在重新启动时重复。 是的。这是我的问题。我根本没有输入start
。 错误:NODE_ENV="production" forever bin/www
。 正确:NODE_ENV="production" forever start bin/www
以上是关于Node.js 永远带有环境变量的主要内容,如果未能解决你的问题,请参考以下文章