错误:听 EACCES 0.0.0.0:443

新手上路,请多包涵

我正在尝试在我的 MacOS 上通过 NodeJS 运行一个 Web 项目。

之后 npm install , npm start 返回错误

events.js:183
  throw er; // Unhandled 'error' event
  ^

Error: listen EACCES 0.0.0.0:443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at Server.setupListenHandle [as _listen2] (net.js:1334:19)
    at listenInCluster (net.js:1392:12)
    at Server.listen (net.js:1476:7)
    at Object.<anonymous> (/Users/softtimur/Startup/PRODSERVER/tmp/WeCard/models/www:36:8)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

我的 Mac 上没有其他网站正在运行。

有谁知道出了什么问题?我需要在我的 Mac 上配置一些东西吗?

编辑1:

sudo npm start 返回

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at Server.setupListenHandle [as _listen2] (net.js:1351:14)
    at listenInCluster (net.js:1392:12)
    at Server.listen (net.js:1476:7)
    at Object.<anonymous> (/Users/softtimur/Startup/PRODSERVER/tmp/WeCard/models/www:36:8)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

原文由 SoftTimur 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 869
2 个回答

为了侦听特权端口,您需要 root 权限才能启动服务器;这适用于端口 < 1024。您可以将 nginx 用作在 443 上运行的反向代理服务器,并以非特权用户身份在非特权端口上运行您的 Node JS 服务器。

有关在生产中使用 nginx 设置 Node JS 应用程序的更多信息,请点击链接: https ://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for- centos-7 上的生产

原文由 Abhishek Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

在类 UNIX 系统中,非 root 用户无法绑定到低于 1024 的端口。

在端口 80 上代理地址时,这很麻烦。通常,您最终会对所有必须绑定到此类端口的应用程序执行 sudo。

但是,从内核 2.6.24 开始,您可以使用 setcap 命令为程序设置特定功能。

要使所有节点程序都绑定到低于 1024 的任何端口,请发出以下命令:

 sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node

注意:如果您不知道 node 的位置,请按照以下命令操作。

 sudo setcap 'cap_net_bind_service=+ep' `which node`

原文由 Arjun Kava 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题