【问题标题】:EAddrInUse for live reload - node js - on running gulp commandEAddrInUse 用于实时重新加载 - 节点 js - 运行 gulp 命令
【发布时间】:2014-10-02 08:22:50
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: node.js port gulp livereload


    【解决方案1】:

    在使用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 应该可以正常工作:)

    【讨论】:

      【解决方案2】:

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

      代替

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

      你可以在启动服务器时这样做:

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

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

      【讨论】:

      • 这应该在哪个文件中完成?
      【解决方案3】:

      我在gulpexpress/index.js 中进行了更改,端口号更改为 35829。它工作正常。

      似乎同一端口号 35729 多次用于两个不同的进程。

      【讨论】:

        【解决方案4】:

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

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

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

        它应该会启动。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-15
          • 2014-10-13
          • 1970-01-01
          • 2016-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多