使用sudo运行节点时使用EXPORT设置process.env变量

时间:2013-01-11 12:16:27

标签: node.js sudo

我在EC2上使用node.js

我输入

EXPORT PORT=80
终端中的

,我看到当我输入EXPORT

时它正确保存了它

但是当我使用以下命令运行我的node.js应用程序时:

...
console.log(process.env);
...

当我使用sudo运行它时,PORT没有在对象中列出:

sudo node app.js

如何设置PORT,以便在使用sudo运行节点时可以从process.env对象访问它?

3 个答案:

答案 0 :(得分:21)

要设置process.env变量,请使用以下代码:

sudo PORT=80 node server.js

当然,您可以设置多个process.env变量:

sudo PORT=80 HOST=localhost node server.js

通常情况下,EXPORT也应该有效。但sudo创建了自己的环境,然后以root启动您的程序。因此,您应该将PORT添加到sudo的环境中,或者强制它保留您自己的环境。

要更改sudo的环境,您需要修改/root/.profile

要强制它保留您自己的环境,请使用-E键:

sudo -E node app.js

答案 1 :(得分:0)

如果您想永久设置它:

  1. 打开您的bash个人资料 vim ~/.bash_profile
  2. 将环境变量添加到文件export PORT=80
  3. 打开sudoers配置文件sudo visudo
  4. 将以下行添加到文件中Defaults env_keep +="PORT"
  5. 现在,当您运行sudo node app.js时,它应该可以正常工作,端口设置为80。

答案 2 :(得分:0)

我知道这是一篇旧文章,但是在端口80上运行node.js时,我也有相同的权限问题。我做了一个变通方法,以避免使用sudo来运行,而不必在node run命令中定义PORT({ {1}})。我所做的就是将PORT 80的流量重定向到另一个允许的端口(在我的情况下为3000)。

sudo PORT=80 node server.js