Laravel集成Pusher广播报错:Options对象必须提供cluster
Laravel Pusher广播系统启动报错:"Uncaught Options object must provide a cluster"
问题场景
按官方文档搭建Laravel+Pusher广播系统,启动服务器后控制台报错:
"Uncaught Options object must provide a cluster"
手动在broadcast.php的Pusher配置options中添加了cluster字段,但错误依旧。相关配置如下:
.env 文件配置
PUSHER_APP_ID=1529400 PUSHER_APP_KEY=521a8d3a78ab50e2c14d PUSHER_APP_SECRET=ce93e12b5f74f8280624 PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=mt1
添加cluster后的broadcast.php配置
'connections' => [ 'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ 'host' => env('PUSHER_HOST', 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), 'encrypted' => true, 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', 'cluster' => env('PUSHER_APP_CLUSTER'), ], 'client_options' => [ // Guzzle client options ], ], ]
解决方案
1. 补全前端Pusher初始化配置
控制台报错是前端Pusher SDK缺少cluster参数导致的,和后端配置无关。需确保前端初始化Echo时传入cluster:
// 示例:resources/js/bootstrap.js 中的配置 import Pusher from 'pusher-js'; window.Pusher = Pusher; window.Echo = new Echo({ broadcaster: 'pusher', key: import.meta.env.VITE_PUSHER_APP_KEY, cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER, // 必须添加该行 forceTLS: true });
2. 同步环境变量到前端
Laravel Vite项目的前端环境变量需以VITE_为前缀,在.env中补充:
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
3. 清除缓存并重启服务
- 清除Laravel配置缓存:
php artisan config:clear
- 重启Vite开发服务器:
npm run dev
- 重启Laravel服务
内容的提问来源于stack exchange,提问作者Joshua Bognet
相关产品推荐
相关产品推荐

