2017-06-25 105 views
0

我正在使用插件gulp-server-livereloadNodeJS:如何停止Web服務器?

var server = require('gulp-server-livereload'); 
gulp.src(pathDir).pipe(server({ 
    livereload: true, 
    directoryListing: true, 
    open: true, 
    port: 80 
})); 

如何停止服務器?

我試過server.restart(),server.kill(),server.reset()

但總是有這樣的錯誤:

Uncaught Error: listen EADDRINUSE 127.0.0.1:35729 at Object.exports._errnoException (util.js:1022:11) at exports._exceptionWithHostPort (util.js:1045:20) at Server._listen2 (net.js:1262:14) at listen (net.js:1298:10) at doListening (net.js:1397:7) at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:1

0)

請幫我解決我的問題或告訴我另一種選擇,你可以如何實現我所需要的東西 。

+0

你爲什麼標記[標籤:電子]和[標籤:節點的webkit],當你gulpfile加載和你關閉了所有以前的過程,因爲錯誤說的端口35729已在使用。 –

回答

1

由於使用該端口的另一個進程而發生此錯誤。它可能只是此過程的先前實例,但是另一個應用程序可能正在使用此端口。

您將無法使用節點停止此操作,因爲它是另一個運行中剩餘的進程,並且進程沒有相互「管理」權限。

在Windows上使用任務管理器殺死節點進程,在Mac上可以使用Activity Monitor,在Unix/Linux上可以使用htop或類似的。


或者在Unix/Linux(含MacOS的),你可以使用

sudo lsof -i :35729 

發現使用該端口的進程ID的進程ID,然後殺死它:

kill -9 {PID} 

爲了確保您的節點服務器乾淨關閉在將來添加事件處理程序:

process.on('SIGTERM', ..) 

process.on('uncaughtException', ..) 

,並調用這些內部代碼關閉應用程序。

+0

如何做到這一點?我在寫server.exit()。但輸出是一個錯誤:未捕獲的類型錯誤:server.exit不是一個函數 – VINET

+0

我不需要殺死的全過程,但只吞下服務器-livereload。進程本身應該工作,我需要爲gulp-server-livereload指定一個不同的目錄。 – VINET

+1

的端口在使用 - 所以你需要殺死之前的運行實例 –