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

时间:2014-02-20 03:18:03

标签: node.js angularjs gruntjs yeoman yeoman-generator

我按照Yeoman's guide设置了一个Angular.js应用。 除了从“localhost”到“0.0.0.0”的主机名外,我没有更改

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

livereload.js failed and causes a long latency

我的整个项目is on github

我为livereload工作,发现了一些嫌疑人:

  • /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"));
      }
    
  • 我的Gruntfile.js设置了livereload为true,我想保留。

有没有人有线索?


更新

我又尝试了一台全新的机器,from scratch。我仍然遇到同样的问题!这次livereload的状态显示为“net :: ERR_CONNECTION_TIMED_OUT”。

enter image description here

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


1 个答案:

答案 0 :(得分:7)

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

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

enter image description here

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