如何在Cloud9 IDE中使用grunt服务?

for*_*own 11 cloud9-ide gruntjs

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

connect: {
  options: {
    port: process.env.PORT,
    hostname: process.env.IP,
    livereload: 35729
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图从Cloud 9终端运行,我得到以下内容:

运行"服务"任务

运行"并发:服务器"(并发)任务

运行"connect:livereload"(连接)任务致命错误:端口8080已被另一个进程使用.

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

connect: {
  options: {
    port: 9000,
    hostname: process.env.IP,
    livereload: 35729
  }
}
Run Code Online (Sandbox Code Playgroud)

从终端我得到:

运行"服务"任务

运行"并发:服务器"(并发)任务

运行"connect:livereload"(连接)任务已启动连接Web服务器 http://0.0.0.0:9000

运行"监视"任务等待...

但是如何http://0.0.0.0:9000从Cloud 9 访问?我试过了http://localhost:9000,http://127.0.0.1:9000我在这里错过了一些东西吗?

小智 9

显然,当使用Apache作为web服务器时,通过使用"mod_proxy_wstunnel"将websocket请求代理到grunt-watch ,您实际上可以使Livereload在Cloud9上工作:

1)将以下指令添加到/etc/apache2/mods-available/proxy_wstunnel.load

ProxyPass /livereload/ ws://127.0.0.1:35729/
Run Code Online (Sandbox Code Playgroud)

2)启用"mod_proxy_wstunnel"及其依赖项"mod_proxy"

ln -s /etc/apache2/mods-available/proxy_wstunnel.load /etc/apache2/mods-enabled/proxy_wstunnel.load
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
Run Code Online (Sandbox Code Playgroud)

3)重启Apache

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

4)到目前为止一切顺利,现在你必须通过修改livereload.js脚本对Livereload将要使用的websocket URL进行硬编码,在我的特殊情况下,它位于〜/ myworkplace/grunt-contrib-watch/node_modules/tiny- lr/lib/public/livereload.js,您需要更改以下行:

this._uri = "ws://" + this.options.host + ":" + this.options.port + "/livereload/";
Run Code Online (Sandbox Code Playgroud)

this._uri = "ws://YOUR_WORK_PLACE.c9.io/livereload/";
Run Code Online (Sandbox Code Playgroud)

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

<script src="/ng-boilerplate/node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/public/livereload.js"></script>
Run Code Online (Sandbox Code Playgroud)

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


小智 6

更新:在Cloud9上,您可以使用端口8080,8081和8082来完成此工作.有关详细信息和示例,您可以查看多个端口.


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

kill -9 $(lsof -i:8080 -t)
Run Code Online (Sandbox Code Playgroud)

并重新启动grunt.那可行.