Gruntjs 如何在Cloud9IDE中使用grunt服务?

Gruntjs 如何在Cloud9IDE中使用grunt服务?,gruntjs,cloud9-ide,Gruntjs,Cloud9 Ide,在我的Gruntfile.js中,我尝试过这样做: connect: { options: { port: process.env.PORT, hostname: process.env.IP, livereload: 35729 } } 我尝试从Cloud 9终端运行,得到以下结果: connect: { options: { port: 9000, hostname: process.env.IP, livereload: 357

在我的Gruntfile.js中,我尝试过这样做:

connect: {
  options: {
    port: process.env.PORT,
    hostname: process.env.IP,
    livereload: 35729
  }
}
我尝试从Cloud 9终端运行,得到以下结果:

connect: {
  options: {
    port: 9000,
    hostname: process.env.IP,
    livereload: 35729
  }
}
运行“服务”任务

正在运行“并发:服务器”(并发)任务

正在运行“connect:livereload”(连接)任务致命错误:端口8080为空 已被另一个进程使用

然后,我将我的Gruntfile.js更改为以下内容:

connect: {
  options: {
    port: 9000,
    hostname: process.env.IP,
    livereload: 35729
  }
}
从终点站我得到:

运行“服务”任务

正在运行“并发:服务器”(并发)任务

正在运行“连接:livereload”(连接)任务已启动连接web服务器 关于
http://0.0.0.0:9000

正在运行“监视”任务等待

但是如何访问
http://0.0.0.0:9000
来自云9?
我试过
http://localhost:9000
http://127.0.0.1:9000
,我是不是遗漏了什么?

更新:在Cloud9上,您可以使用端口8080、8081和8082来实现这一点。有关详细信息和示例,请参见


在Cloud9中,端口8080是唯一外部可访问的端口,因此请将9000更改为8080。 该端口正由另一个进程使用,应先停止该进程。使用:

kill -9 $(lsof -i:8080 -t)

然后重新启动grunt。这将起作用。

当用于本地/环回连接时,您可以使用任何端口。从工作区之外只能访问一个端口(此时,C9正在考虑多个端口)。对不起,我对这个利弗雷罗德不太熟悉。grunt似乎也需要生成一个浏览器?这不会在C9上运行

但是为什么不使用Cloud9提供的“实时预览”? 只需打开任何html页面,单击预览并选择“实时预览”。
所有对css、html的更改都将立即在预览框中应用。

显然,当使用Apache作为web服务器时,您实际上可以通过“mod_proxy_wstunel”将websocket请求代理给grunt watch,从而在Cloud9上运行Livereload

1) 将以下指令添加到/etc/apache2/mods available/proxy\u wstunnel.load

ProxyPass /livereload/ ws://127.0.0.1:35729/
2) 启用“mod_proxy_wstunnel”及其依赖项“mod_proxy”

3) 重新启动Apache

service apache2 restart
4) 到目前为止还不错,现在您必须硬编码Livereload将使用的websocket URL,通过修改Livereload.js脚本,在我的特殊情况下,它位于~/myworkplace/grunt contrib watch/node\u modules/tiny lr/lib/public/Livereload.js,您需要更改以下行:

this._uri = "ws://" + this.options.host + ":" + this.options.port + "/livereload/";

5) 最后但并非最不重要的一点是,您必须在所需页面中直接引用livereload.js脚本,在我的特定实例中:

<script src="/ng-boilerplate/node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/public/livereload.js"></script>


希望这可以帮助别人,尤其是节省一些时间:)

对不起,另一个问题……livereload是否可以使用Grunt?或者我不能使用端口35729?我使用grunt编译sass、运行js提示等,它将创建一个web服务器来服务html(因此grunt服务)。每当我更改某些内容时,它将自动再次执行该过程(编译sass..等),并通过使用另一个端口的“Livereload”更新html(类似于live预览)。(默认为端口35729)。如果我使用云9提供的“实时预览”,我将无法使用Grunt。无论如何,云9仍然是一流的,并将继续成为付费客户,但希望C9很快将提供多个端口,或者可能有另一种方式使用LivereLoadThank和+1!但是,为什么不使用grunt选项而不是编辑node_模块:(您可以设置主机和端口)我有Chrome和https问题,所以将步骤4更改为:this._uri=“ws”+(this.options.https?”s:“)+”:/.c9.io/livereload/”;
<script src="/ng-boilerplate/node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/public/livereload.js"></script>