无法让grunt-php启动浏览器并连接

时间:2013-11-11 14:18:59

标签: gruntjs

当我在HTML文件的 Gruntfile.js 中使用grunt-contrib-connect并调用该任务时,浏览器会启动并连接LiveReload而不会出现问题。

我现在正尝试对PHP文件执行相同操作,因此我使用的是grunt-php。作者声称grunt-php “几乎是grunt-contrib-connect的替代品”

我已将grunt-contrib-connect的选项复制到grunt-php任务,并添加了keepaliveopen,但浏览器未启动且未建立任何连接。然而,终端显示:

Running "php:livereload" (php) task PHP 5.4.17 Development Server started at Mon Nov 11 15:56:04 2013 Listening on http://localhost:9000 Document root is /Users/fisu/Sites/generator-site-playground/dev

我的任务如下:

php: {
    options: {
        keepalive: true,
        open: true,
        port: 9000,
        livereload: 35729,
        hostname: 'localhost',
        base: 'dev'
    },
    livereload: {
        options: {
            open: 'http://localhost:9000',
            base: 'dev'
        }
    }
}

我尝试了不同的主机名,但浏览器仍无法启动和连接。我错过了一个选项吗?

1 个答案:

答案 0 :(得分:2)

不仅仅是你。问题似乎在于这个方法:https://github.com/sindresorhus/grunt-php/blob/master/tasks/php.js#L51-L59 - open()似乎永远不会被调用,因为它正在等待HTTP 200,除非浏览器命中服务器并请求某些内容,否则它将无法获取。至少在我的机器上似乎就是这种情况,我不知道该方法的测试结果如何。临时修复可能是将该调用移出该方法;进入node_modules/grunt-php/tasks/目录并编辑文件,如下所示:

(l49) // check when the server is ready. tried doing it by listening
      // to the child process `data` event, but it's not triggered...
      checkServer('http://' + host, function () {
          if (!this.flags.keepalive && !options.keepalive) {
              cb();
          }
      }.bind(this));
      // open the browser straight away
      if (options.open) {
          open('http://' + host);
      }

我也提出了一个问题。 https://github.com/sindresorhus/grunt-php/issues/14