EAddrInUse用于实时重新加载 - 节点js - 关于运行gulp命令

sab*_*ari 1 port node.js livereload gulp

我为我的mean-io堆栈应用程序运行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)
Run Code Online (Sandbox Code Playgroud)

我猜其他应用程序正在使用端口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;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Rya*_*lah 10

在使用时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)
Run Code Online (Sandbox Code Playgroud)

现在你有了正在试图访问的端口的进程的PID,所以你可以用它来杀死它

$ kill -9 15723
Run Code Online (Sandbox Code Playgroud)

现在运行gulp应该工作得很好:)