19

我在 EC2 上使用 node.js

我打字

EXPORT PORT=80

在终端中,我看到它在我输入 EXPORT 时正确保存

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

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

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

sudo node app.js

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

4

2 回答 2

24

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

sudo PORT=80 node server.js

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

sudo PORT=80 HOST=localhost node server.js

通常,EXPORT也应该工作。但是sudo会创建自己的环境,然后以root. 因此,您应该添加PORTsudo's 环境或强制它保留您自己的环境。

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

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

sudo -E node app.js
于 2013-01-11T12:26:28.543 回答
0

我知道这是一篇旧帖子,但我在端口 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
于 2020-12-06T19:19:28.360 回答