没有代理的Laravel BrowserSync

时间:2015-10-08 23:57:39

标签: php laravel browser-sync

我正在尝试使用Elixir BrowserSync,这是Laravel的最新功能之一。

我将它添加到gulp文件

elixir(function(mix) {
    mix.sass('app.scss')
    .browserSync();
});

当我运行“gulp watch”时,它输出此消息

[20:49:20] Using gulpfile ~/Desktop/laravel/gulpfile.js
[20:49:20] Starting 'watch'...
[20:49:20] Finished 'watch' after 11 ms
[BS] Proxying: http://homestead.app
[BS] Access URLs:
----------------------------------
Local: http://localhost:3000
External: http://10.9.0.48:3000

使用网址http://localhost:3000自动启动浏览器,但不会加载任何内容。

我认为问题与这一行有关:     [BS]代理:http://homestead.app

4 个答案:

答案 0 :(得分:3)

如果您使用BrowserSyncs服务器,则可以。

mix.browserSync({
  proxy: false,
  server: {
    baseDir: './'
  }
});

答案 1 :(得分:2)

直接回答您的问题 - 无法代理.browserSync。长边回答 - 你仍然可以在browserSync中使用elixir的gulp实现,但你必须有一个单独的PHP服务器来解释这些文件。

编辑:我通过手动提供页面中的脚本(通过在.browserSync()调用中不提供任何参数,但不记得在哪里和如何要做到这一点。

原因是browserSync会为您请求服务器上的所有数据,注入一些javascript监听器并显示其他所有内容:

<script type='text/javascript' id="__bs_script__">//<![CDATA[document.write("<script async src='/browser-sync/browser-sync-client.2.9.11.js'><\/script>".replace("HOST", location.hostname));//]]></script>

一种方法是在单独的终端中php artisan serve --host=0.0.0.0启动服务器,然后使用.browserSync({proxy: 'localhost:8000'})。一切正常 - BrowserSync UI和刷新页面的所有调用。

注意:如果没有artisan serve,我就无法连接到--host=0.0.0.0

对于那些想通过gulp获得全自动解决方案的人来说,这是:

使用gulp包gulp-connect-phplaravel-elixir-browsersync2。第一个启动php artisan serve,另一个将其连接到browserSync

  1. 安装软件包:

    • npm install laravel-elixir-browsersync2 --save-dev

    • npm install gulp-connect-php --save-dev

  2. 将所需的行添加到gulpfile.js

  3. 代码:

    var elixir = require('laravel-elixir'),
        gulp = require('gulp');
    var connectPHP = require('gulp-connect-php');
    var BrowserSync = require('laravel-elixir-browsersync2');
    
    elixir(function(mix) {
        mix.sass('app.scss');
    });
    
    elixir(function(mix) {
        connectPHP.server({
            base: './public',
            hostname: '0.0.0.0',
            port: 8000
        });
        BrowserSync.init();
        mix.BrowserSync(
        {
            proxy: 'localhost:8000',
            logPrefix       : "Laravel Eixir BrowserSync",
            logConnections  : false,
            reloadOnRestart : false,
            notify          : false
        });
    });
    
    1. 然后 - 只需gulp
    2. 免责声明:这可能不适用于gulp watch,但可能会有人对此作出答案。

      PHP server not started. Retrying...之前还有一行[Laravel Eixir BrowserSync] Proxying: http://localhost:8000。在尝试检查服务器是否正在运行时,它属于gulp-connect-php

答案 2 :(得分:1)

你在运行多个宅基地吗?如果您不包含代理设置,它看起来默认通过homestead.app进行代理。如果你没有在homestead.app上托管你的本地,它就找不到它。

尝试

.browserSync({proxy:'domain.app'});

domain.app就是您为该网站提供服务的地方。

答案 3 :(得分:0)

我在Bloracity的laracast上找到了其他解决方案,它就像魅力一样对我有用! $ php artisan serve --host=0 然后在你的gulp添加: mix.browserSync({proxy: 'localhost:8000'});