node.js - dotenv 不适用于 root 权限
问题描述
我正在运行一个使用create-react-app
. 我想让它在端口上运行80
,所以我添加了一个.env
包含内容的文件
PORT=80
当我跑步时npm start
,我得到
? Admin permissions are required to run a server on a port below 1024.
但是当我运行时sudo npm start
,应用程序在端口上启动3000
。
为什么.env
当我使用 运行时我的文件会被忽略,我sudo
该如何解决这个问题?
编辑:这个问题不是关于如何在我运行时保留我当前的环境变量sudo
。这个问题是关于 的行为.env
,以及为什么在运行时它不起作用sudo
。
有趣的是,当我使用 su 时,例如。
$ su
# npm start
它在端口 80 上运行。
为了完全清楚,我想知道如何在80
不通过命令传递端口的情况下在端口上运行我的应用程序,即sudo PORT=80 npm start
. 我相信这就是.env
问题的全部意义所在。
解决方案
我不认为您可以在没有 root 权限的情况下在端口 80 上运行服务器,但我认为您可以将连接从端口 80 重定向到其他端口。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
推荐阅读
- javascript - 鼠标事件的触发点击与切换
- codenameone - Android访问位置使登录屏幕放大效果
- c++ - 将 stl 字符串缩小到小于 15 个字符的容量
- php - 如何从原生 PHP 读取 Codeigniter 3 会话值?
- javascript - ShowText 中的文本着色以及调用变量?
- r - R中的多个列表JSON到数据框
- ios - SpriteKit iPhone/iPhoneX/iPad 尺寸问题
- junit - 问题 - JUNIT 验证信息添加到 Camel 路由标头
- php - 如何在 Wordpress 登录期间重定向用户?
- python - python 3.5 带括号和引号的语法错误