我在 EC2 上使用 node.js
我打字
EXPORT PORT=80
在终端中,我看到它在我输入 EXPORT 时正确保存
但是当我使用以下内容运行我的 node.js 应用程序时:
...
console.log(process.env);
...
当我使用 sudo 运行 PORT 时,它没有在对象中列出:
sudo node app.js
如何设置 PORT 以便在使用 sudo 运行节点时从 process.env 对象访问它?
要设置process.env
变量,请使用以下代码:
sudo PORT=80 node server.js
当然,你可以设置多个process.env
变量:
sudo PORT=80 HOST=localhost node server.js
通常,EXPORT
也应该工作。但是sudo
会创建自己的环境,然后以root
. 因此,您应该添加PORT
到sudo
's 环境或强制它保留您自己的环境。
要改变sudo
的环境,你应该修改/root/.profile
。
要强制它保留您自己的环境,请使用-E
密钥:
sudo -E node app.js
我知道这是一篇旧帖子,但我在端口 80 上运行 node.js 时遇到了同样的权限问题。我做了一个解决方法来避免sudo
在节点运行命令 ( sudo PORT=80 node server.js
) 中运行并必须定义 PORT。我所做的是将 PORT 80 的流量重定向到另一个允许的端口,在我的例子中是 3000。
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000