我按照Yeoman's guide设置了一个Angular.js应用。 除了从“localhost”到“0.0.0.0”的主机名外,我没有更改。
当我grunt serve
时,没有错误。最终我确实看到了''Allo,'Allo'首页,但是只有在来自livereload.js?snipver = 1 超过 30秒的延迟之后,才能获得GET。正如您在右侧所看到的,服务器不会输出任何异常。
我的整个项目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”。
更多信息:我在AWS EC2上运行,只打开了端口8000和9000。
答案 0 :(得分:7)
在考虑之后,我确定它不可能是Yeoman或我的任何Ubuntu服务器的错,因为在我擦干机器并重新开始之后没有任何改变。它也不是浏览器上的阻止IP,因为Chrome和Firefox都有同样的问题。它不是我客户端计算机上的阻止IP,因为问题仍存在于另一台计算机上。
当我真正查看livereload请求的确切网址时,灯泡熄灭了。它在端口35729上请求,我没有在我的AWS EC2帐户上打开一个端口!
在打开那个端口之后,它完美无缺!