nodejs-tw / ama

Ask me anything!
MIT License
31 stars 1 forks source link

Error: listen EADDRINUSE -- port 被使用中且無法關閉 #20

Open moojing opened 7 years ago

moojing commented 7 years ago

感謝使用 Node.js Taiwan AMA,以下附上簡單提問範例供參考,請把內容改成你自己遇到的問題

結果

已解決...也不算完全解決 過一段時間不知道為什麼就自己關閉了...

目的

<<遇到 Error: listen EADDRINUSE 問題且嘗試取得此連線的pid 卻無法關閉>>

使用的工具

<<我在 win7 下使用cmder(Linux環境) 使用 npm 安裝 node.js v6.9.5 >>

遇到的問題

<<

寫了一個簡單的express 來啟動server ,想改變其中某些程式碼 , 在啟動一次的時候卻無法使用,顯示Error: listen EADDRINUSE :::8000 意思是8000 port 已經在使用中... 且找不到方法關閉

嘗試過的解法

<< 使用 netstat ano 來顯示正在監聽的port 發現 8000 port 正在被執行且 pid 為 7300。 TCP [::]:8000 [::]:0 LISTENING 7300

(搜尋的過程有發現其他如 lsof 跟fuser 指令 也可以用來查找有哪些port 正在使用中 但似乎要osx 才能使用? cmder好像沒有支援)

使用 kill -9 7300 kill-15 7300 刪除process卻都沒反應

程式碼

下面附上我的程式碼以及我遇到的錯誤

程式碼

var express = require('express');
var app = express();
var port = 8000;

app.set('view engine', 'ejs');
var router = require('./routes')(app);
app.use(express.static(__dirname + '/public'));/* 將預設路徑設在public*/

app.listen(port,() => console.log(`listening on ${port}`));

錯誤

Error: listen EADDRINUSE :::8000
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at Server._listen2 (net.js:1259:14)
    at listen (net.js:1295:10)
    at Server.listen (net.js:1391:5)
    at Object.<anonymous> (C:\Users\chcg\Desktop\程式\class\12.Express,Koa\Express\test1.js:18:4)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)