Yeoman Angular.js grunt serve-d app有很长的延迟来自livereload.js?snipver = 1

ran*_*a1k 10 node.js angularjs gruntjs yeoman yeoman-generator

我按照Yeoman的指南设置了一个Angular.js应用程序. 除了主机名从"localhost"到"0.0.0.0"之外,我没有更改任何内容.

当我这样做时grunt serve,没有错误.最终我确实看到了''Allo,'Allo'首页,但是只有在livereload.js?snipver = 1超过30秒的延迟后才能获得GET.正如您在右侧所看到的,服务器不会输出任何异常.

livereload.js失败并导致长延迟

我的整个项目都在github上.

我为livereload grep-ped找到了一些嫌疑人:

  • /node_modules/grunt-contrib-connect/node_modules/connect-livereload/index.js以下这两个函数包含livereload url.第一个链接到" http://my.ip.addr.ess:9000/livereload.js ",其中有"无法获取".

    function getSnippet() {
        /*jshint quotmark:false */
        var snippet = [ 
            "<!-- livereload script -->",
            "<script type=\"text/javascript\">document.write('<script src=\"http://'",
            " + (location.host || 'localhost').split(':')[0]",
            " + ':" + port + "/livereload.js?snipver=1\" type=\"text/javascript\"><\\/  script>')",
            "</script>",
            ""  
        ].join('\n');
        return snippet;
      };    
    
      function snippetExists(body) {
        if (!body) return true;
        return (~body.lastIndexOf("/livereload.js?snipver=1"));
      }
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的Gruntfile.js将livereload设置为true,我想保留.

有人有线索吗?


更新:

从头开始再次试用一台全新的机器.我仍然遇到同样的问题!这次livereload的状态显示为"net :: ERR_CONNECTION_TIMED_OUT".

在此输入图像描述

更多信息:我在AWS EC2上运行,只打开了端口8000和9000.


ran*_*a1k 7

在考虑之后,我确定它不可能是Yeoman或我的任何Ubuntu服务器的错,因为在我擦干机器并重新开始之后没有任何改变.它也不是浏览器上的阻止IP,因为Chrome和Firefox都有同样的问题.它不是我客户端计算机上的阻止IP,因为问题仍存在于另一台计算机上.

当我真正查看livereload请求的确切URL时,灯泡熄灭了.它是在端口35729上请求,我没有在我的AWS EC2帐户上打开一个端口!

在此输入图像描述

打开那个端口后,它完美无缺!