无法使用 Laravel Sail with Laravel Mix 使 Browsersync 正常工作

Cannot get Browsersync working properly with Laravel Sail with Laravel Mix

我已经设法让 Browsersync 部分工作,但是,每当我在页面加载后从我的应用程序发出请求时,请求都会发送到错误的 URL。

以下是我的 Browsersync 设置:

mix.browserSync({
    proxy: 'localhost',
    port: 8082,
    injectChanges: false,
    open: false,
    files: [
        './public/css/*.css',
        './public/js/*.js',
        './resources/views/**/*.blade.php',
        './resources/js/**/*.vue',
        './resources/css/**/*.css',
    ],
})

这是我的 docker-compose.yml:

version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        working_dir: /var/www/html
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - "9865:22"
            - "8082:8082"
            - "8083:8083"
        # ...

我导航到 http://localhost:8082/,页面加载正常,Browsersync 显示已连接。但是,当我提交表单时,我得到以下信息:

据我了解,这是代理没有端口的问题,但是,我尝试将代理更改为 localhost:8082 然后我什至无法连接。我还尝试了将其更改为 127.0.0.1 的其他建议,但没有任何区别。

我通过设置以下配置解决了我的问题:

mix.browserSync({
    proxy: 'localhost:8081',
    port: 8082,
    ui: {
        port: 8083,
    },
    injectChanges: false,
    open: false,
    files: [
        './public/css/*.css',
        './public/js/*.js',
        './resources/views/**/*.blade.php',
        './resources/js/**/*.vue',
        './resources/css/**/*.css',
    ],
    watchOptions: {
        usePolling: true,
        interval: 500,
    },
    ghostMode: false,
})

其中 8081 是在 .env 文件中设置的 APP_PORT。换句话说,Browsersync 需要代理到与您的应用 运行 相同的端口。