45

我在服务器上运行以启动节点应用程序的命令是:

sudo IS_PROD=1 node app.js

我已经永远安装了,但似乎无法传递环境变量。

sudo IS_PROD=1 forever node app.js

似乎没有奏效。我已经尝试了几个品种。如何成功执行此命令或永久设置环境变量?

4

2 回答 2

97

首先你应该跳过node你命令中的东西,它不应该在那里,你不应该能够执行它。自动启动您的脚本。相反,您应该这样做;

sudo IS_PROD=1 forever app.js

您可能不想在前台启动服务器,而是希望将服务器作为守护程序启动。例如。

sudo IS_PROD=1 forever start app.js

这将在后台创建一个进程,该进程将监视您的节点应用程序并在它退出时重新启动它。有关详细信息,请参阅自述文件

这两种方法都保留了环境变量,就像您刚刚使用node.

于 2013-03-05T11:58:49.383 回答
17

应用程序.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

文档

进程.env

包含用户环境的对象。请参见环境 (7)。

于 2013-03-05T08:02:39.100 回答