当我在HTML文件的 Gruntfile.js 中使用grunt-contrib-connect并调用该任务时,浏览器会启动并连接LiveReload而不会出现问题。
我现在正尝试对PHP文件执行相同操作,因此我使用的是grunt-php。作者声称grunt-php “几乎是grunt-contrib-connect的替代品”。
我已将grunt-contrib-connect的选项复制到grunt-php任务,并添加了keepalive
和open
,但浏览器未启动且未建立任何连接。然而,终端显示:
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'
}
}
}
我尝试了不同的主机名,但浏览器仍无法启动和连接。我错过了一个选项吗?
答案 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