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 永远带有环境变量的主要内容,如果未能解决你的问题,请参考以下文章

怎么把node.js的bin添加到环境变量

怎么配置node.js环境变量

node.js环境安装及环境变量

win 环境下 node.js环境变量

在 WebStorm 中设置 Node.js 环境变量

从 Node.js 中设置全局环境变量