簡體   English   中英

端口100未在本地主機的node.js中運行

[英]port 100 not running in node.js in localhost

我已經使用以下代碼在node.js中創建了一個http服務器,並嘗試在端口100上運行它:

var http = require("http");

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end("Howdy");
}).listen(100);

console.log("server running on port 100"); 

這樣,服務器無法啟動,並且我在linux控制台上收到以下錯誤消息:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1135:5)
    at Object.<anonymous> (/home/badhai/Desktop/mainn.js:6:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

但是,如果我在端口100上舉起了sails.js應用程序,則該應用程序將在端口100上成功運行。但是,以上代碼在端口8081上成功運行。我想知道是否需要對服務器創建方法或其他方面進行任何更改,因此是否可以使其在端口100上成功運行?

錯誤消息的EACCES部分是此處的關鍵-這意味着您無權訪問該端口。 <1024的端口是系統保留的。 最好使用1024-65535范圍內的端口

大多數現代操作系統將綁定到保留端口(少於1024個)的權限限制為以root(或同等身份)運行的進程。

如果您絕對必須綁定到端口100,則可以使用Google谷歌搜索提供多種方法:

https://gist.github.com/firstdoit/6389682

最好使用大於1024的端口。我使用的端口從3000開始。但是,如果您真的想在端口100上啟動它,並且您了解自己在做什么,那么請安裝setcap並允許綁定小於1024的端口。

> sudo apt-get install setcap
> sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node

NodeJS也可以安裝在其他目錄中,因此最好檢查一下它的位置,並在路徑上方調用setcap命令。

> which node
/usr/local/bin/node

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM