我在EC2上使用node.js
我输入
EXPORT PORT=80
终端中的,我看到当我输入EXPORT
时它正确保存了它但是当我使用以下命令运行我的node.js应用程序时:
...
console.log(process.env);
...
当我使用sudo运行它时,PORT没有在对象中列出:
sudo node app.js
如何设置PORT,以便在使用sudo运行节点时可以从process.env对象访问它?
答案 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)
如果您想永久设置它:
vim ~/.bash_profile
export PORT=80
sudo visudo
Defaults env_keep +="PORT"
现在,当您运行sudo node app.js
时,它应该可以正常工作,端口设置为80。
答案 2 :(得分:0)
我知道这是一篇旧文章,但是在端口80上运行node.js时,我也有相同的权限问题。我做了一个变通方法,以避免使用sudo
来运行,而不必在node run命令中定义PORT({ {1}})。我所做的就是将PORT 80的流量重定向到另一个允许的端口(在我的情况下为3000)。
sudo PORT=80 node server.js