2014-10-02 48 views
0

我爲我的平均io棧應用程序運行gulp。EAddrInUse實時刷新 - 節點js - 運行gulp命令

我得到下面的錯誤。

13:15:54] Starting 'server'... 
13:15:54] Finished 'server' after 47 ms 
13:15:54] Live reload server listening on: 35729 

.. Uhoh. Got error listen EADDRINUSE ... 
rror: listen EADDRINUSE 
    at errnoException (net.js:901:11) 
    at Server._listen2 (net.js:1039:14) 
    at listen (net.js:1061:10) 
    at Server.listen (net.js:1127:5) 

我猜想端口35729正在被其他應用程序使用。我對嗎?我也嘗試更改livereload.js中的端口號。但是,然後,我得到了同樣的錯誤。

以下是其中的文件,我看到分配的35729端口號。請讓我知道是否應該在任何地方更改端口號。

myApp\node_modules\grunt-contrib-watch\node_modules\tiny-lr-fork\lib\public\livereload.js: 
321:  this.port = 35829;     
myApp\node_modules\grunt-contrib-watch\node_modules\tiny-lr-fork\lib\server.js 
20: options.port = parseInt(options.port || 35729, 10);    
myApp\node_modules\grunt-contrib-watch\node_modules\tiny-lr-fork\node_modules\noptify\index.js: 
21: //  .option('port', '-p', 'Port to listen on (default: 35729)', Number)   
myApp\node_modules\grunt-contrib-watch\node_modules\tiny-lr-fork\bin\tiny-lr: 
14: .option('port', '-p', 'Port to listen on (default: 35729)', Number) 
18: opts.port = opts.port || 35729; 

謝謝。

回答

0

我在gulpexpress/index.js做了一個更改,端口號更改爲35829.而且它工作。

似乎相同的端口號35729多次用於兩個不同的進程。

7

gulp工作,我發現有時候我終止進程將無法關閉livereload端口35729.這留下一個打開的文件描述符偵聽該端口上的連接,這將使它很難啓動我的服務器因爲gulp只要啓動livereload就會抱怨。

有時你不知道擁有連接的進程的名稱,所以很難找到並殺死它。要列出由使用TCP在端口上偵聽的處理器打開的文件,可以使用lsof -n -i4TCP:#####命令。在這種情況下,您可以:

$ lsof -n -i4TCP:35729 
COMMAND PID  USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
node 15723 testuser 24u IPv6 0x71823b3990749ea5  0t0 TCP *:35729 (LISTEN) 

現在你有在聽你試圖訪問該端口的進程的PID,這樣你就可以

$ kill -9 15723 

現在殺了這個運行gulp應該工作得很好:)

+0

應該接受的答案。 – Red2678 2015-11-07 14:39:32

1

端口35729使用(gulp-express)tiny-lr livereload服務器。您需要禁用tiny-lr livereload服務器。

而不是

server.run(['app.js']); 

您可以在啓動服務器時,這樣做:

server.run(['app.js'], {}, false|35729|{}); 

false意味着tiny-lr livereload服務器禁用。