搜尋

首頁  >  問答  >  主體

node.js - node端口占用要怎么处理?

node端口占用要怎么处理

巴扎黑巴扎黑2872 天前824

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 14:55:58

    在www裡面改一下監聽埠就好。

    回覆
    0
  • 迷茫

    迷茫2017-04-17 14:55:58

    如果能換埠,找到你專案中config.js 看到那個port了嗎?改後面的值就行。
    如果不能換埠的話。 。

    圖是在windows下的,那就按windows的方法了:

    netstat –ano|findstr "8080"

    找出對應進程的PID,然後:

    taskkill -PID <进程号> -F

    或進任務管理器,找到對應PID的進程,結束之。

    回覆
    0
  • 阿神

    阿神2017-04-17 14:55:58

    這種情況,十有八九是你的這個程式已經啟動或你的另一個node檔案正在監聽這個連接埠。只需要將那個程式套用ctrl+c掉。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:55:58

    殺掉進程,或啟動更換埠

    回覆
    0
  • 阿神

    阿神2017-04-17 14:55:58

    https://segmentfault.com/a/11...

    Node 中實作連接埠被佔用了,使用另外一個連接埠

    為了解決 ssr 工具 起多個服務的時候連接埠被佔用的情況。分享研究的程式碼片段。

    // 检测port是否被占用
    function probe(port, callback) {
    
        var server = net.createServer().listen(port)
    
        var calledOnce = false
    
        var timeoutRef = setTimeout(function () {
            calledOnce = true
            callback(false,port)
        }, 2000)
    
        timeoutRef.unref()
    
        var connected = false
    
        server.on('listening', function() {
            clearTimeout(timeoutRef)
    
            if (server)
                server.close()
    
            if (!calledOnce) {
                calledOnce = true
                callback(true,port)
            }
        })
    
        server.on('error', function(err) {
            clearTimeout(timeoutRef)
    
            var result = true
            if (err.code === 'EADDRINUSE')
                result = false
    
            if (!calledOnce) {
                calledOnce = true
                callback(result,port)
            }
        })
    }
    

    使用範例:

    function server(_port){
        var pt = _port || __port;
        probe(pt,function(bl,_pt){
            // 端口被占用 bl 返回false
            // _pt:传入的端口号
            if(bl === true){
                // ssr(_pt)
                server = http.createServer(connListener);
                server = server.listen(parseInt(_pt, 10));
                console.log("\n  Static file server running at" + "\n\n=> http://localhost:" + _pt + '\n');
            }else{
                server(_pt+1)
            }
        })
    }

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:55:58

    第一步:運行lsof -i:端口号。透過這個指令你可以看到佔用埠號碼的進程ID。
    第二步:kill 进程ID即可。

    X,你是windows啊。 。 。當我沒說。

    回覆
    0
  • 取消回覆