用sudo运行节点时使用EXPORT设置process.envvariables
我在EC2上使用node.js
我input
EXPORT PORT=80
在terminal,我看到它正确保存它,当我inputEXPORT
但是,当我运行我的node.js应用程序与以下内容:
... console.log(process.env); ...
当我用sudo运行它时,PORT没有列在对象中:
sudo node app.js
如何设置PORT,以便可以使用sudo运行节点时从process.env对象访问它?
要设置process.env
variables,请使用以下代码:
sudo PORT=80 node server.js
当然,你可以设置多个process.env
variables:
sudo PORT=80 HOST=localhost node server.js
通常情况下, EXPORT
应该工作。 但sudo
创build自己的环境,然后以root
身份启动您的程序。 所以,你要么把PORT
添加到sudo
的环境中,要么强迫它保留你自己的环境。
要改变sudo
的环境,你应该修改/root/.profile
。
要强制它保留自己的环境使用-E
键:
sudo -E node app.js
如果你想永久设置它:
- 打开你的bashconfiguration文件
vim ~/.bash_profile
- 将环境variables添加到文件
export PORT=80
- 打开sudoersconfiguration文件
sudo visudo
-
Defaults env_keep +="PORT"
完全添加到文件中Defaults env_keep +="PORT"
现在当你运行sudo node app.js
它应该按照需要工作,将端口设置为80。