用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.envvariables,请使用以下代码:

 sudo PORT=80 node server.js 

当然,你可以设置多个process.envvariables:

 sudo PORT=80 HOST=localhost node server.js 

通常情况下, EXPORT应该工作。 但sudo创build自己的环境,然后以root身份启动您的程序。 所以,你要么把PORT添加到sudo的环境中,要么强迫它保留你自己的环境。

要改变sudo的环境,你应该修改/root/.profile

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

 sudo -E node app.js 

如果你想永久设置它:

  1. 打开你的bashconfiguration文件vim ~/.bash_profile
  2. 将环境variables添加到文件export PORT=80
  3. 打开sudoersconfiguration文件sudo visudo
  4. Defaults env_keep +="PORT"完全添加到文件中Defaults env_keep +="PORT"

现在当你运行sudo node app.js它应该按照需要工作,将端口设置为80。