亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

偵聽大多數端口時出現Node.js EACCES錯誤

偵聽大多數端口時出現Node.js EACCES錯誤

慕的地10843 2019-08-30 15:48:28
我正在測試一個應用程序(希望在heroku上運行,但在本地也有問題)。運行http.Server.listen()時它會給我一個EACCES錯誤 - 但它只發生在某些端口上。所以,我在本地運行:joe@joebuntu:~$ node> var h = require('http').createServer();> h.listen(900);Error: EACCES, Permission denied    at Server._doListen (net.js:1062:5)    at net.js:1033:14    at Object.lookup (dns.js:132:45)    at Server.listen (net.js:1027:20)    at [object Context]:1:3    at Interface.<anonymous> (repl.js:150:22)    at Interface.emit (events.js:42:17)    at Interface._onLine (readline.js:132:10)    at Interface._line (readline.js:387:8)    at Interface._ttyWrite (readline.js:564:14)我沒有在端口900上運行任何東西(或者我試過的其他20個端口),所以這應該有效。奇怪的是它確實可以在某些端口上運行。例如,端口3000完美運行。什么會導致這個?更新1:我發現在我的本地計算機上,EACCES錯誤即將發生,因為我必須以root身份運行節點才能綁定到那些特定端口。我不知道為什么會這樣,但使用sudo修復它。但是,這并沒有解釋我如何在Heroku上修復它。沒有辦法在Heroku上以root身份運行,那么如何在端口80上偵聽?
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

查看此參考鏈接:


授予安全用戶權限以使用端口80


請記住,我們不希望以root用戶身份運行您的應用程序,但有一個障礙:您的安全用戶無權使用默認HTTP端口(80)。您的目標是能夠通過導航到易于使用的URL來發布訪問者可以使用的網站 http://ip:port/


不幸的是,除非您以root身份登錄,否則通常必須使用類似的URL http://ip:port- 其中端口號> 1024。


很多人都被困在這里,但解決方案很簡單。有一些選擇,但這是我喜歡的。輸入以下命令:


sudo apt-get install libcap2-bin

sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``

現在,當您告訴Node應用程序您希望它在端口80上運行時,它不會抱怨。


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 754 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號