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

时间:2014-10-02 08:22:51

标签: node.js port gulp livereload

我为我的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)

我猜其他应用程序正在使用端口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;

感谢。

4 个答案:

答案 0 :(得分:9)

使用pandas.DataFrame时,我发现有时终止我的进程将无法关闭gulp端口35729上的连接。这会在该端口上侦听一个打开的文件描述符,因为livereload会在启动gulp后立即投诉,因此很难重新启动我的服务器。

有时您不知道拥有该连接的进程的名称,因此很难找到并杀死它。要列出使用TCP在端口上侦听的处理器打开的文件,可以使用livereload命令。在这种情况下,您得到:

lsof -n -i4TCP:#####

现在您拥有正在侦听您尝试访问的端口的进程的PID,因此您可以使用

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

现在正在运行$ kill -9 15723 应该可以正常工作:)

答案 1 :(得分:1)

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

而不是

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

启动服务器时可以执行此操作:

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

false表示已禁用tiny-lr livereload服务器。

答案 2 :(得分:0)

我在gulpexpress/index.js进行了更改,端口号更改为35829.它有效。

对于两个不同的进程,似乎相同的端口号35729被多次使用。

答案 3 :(得分:0)

我在Windows上遇到了同样的问题,您可以使用netstat -aon来查看正在使用的端口(即侦听,已建立)。这还提供了列出的每个项目的进程ID。

enter image description here

在下面的屏幕截图中,端口被PID 10968的进程使用(或监听)。

打开您的任务管理器,然后转到详细信息标签并查找相同的PID。点击结束任务,然后使用npm start重新启动您的应用。

它应该启动。