2017-08-10 104 views
0

当我没有在bootstrap.js中指定Laravel Echo时,应用程序正常工作。Laravel Echo导致邮局路由失败

composer.json

"require": { 
    "laravel/framework": "5.4.*", 
    "pusher/pusher-php-server": "~2.6", 
}, 

的package.json

"dependencies": { 
    "laravel-echo": "^1.3.2", 
    "pusher-js": "^4.1.0", 
} 

bootstrap.js

import Echo from 'laravel-echo'; 

window.Pusher = require('pusher-js'); 

window.Echo = new Echo({ 
    broadcaster: 'pusher', 
    key: 'app-key', 
    cluster: 'eu', 
    encrypted: true 
}); 

broadcasting.php

'pusher' => [ 
    'driver' => 'pusher', 
    'key' => env('PUSHER_APP_KEY'), 
    'secret' => env('PUSHER_APP_SECRET'), 
    'app_id' => env('PUSHER_APP_ID'), 
    'options' => [ 
     'cluster' => 'eu', 
     'encrypted' => true 
    ], 
], 

我在我的本地主机上,并试图遵循多个教程和许多变化,但没有一个解决了这个问题。该应用程序正确加载所有获得的API路线,但是当我尝试登录时,我得到一个500错误。

我也使用Vue & VueRouter万一有什么影响。

编辑

看来,事情是干扰与CsrfToken与爱可信发送。如果我重新安排我的bootstrap.js文件,以便回声导入前爱可信:

import Echo from 'laravel-echo'; 
etc. 

window.axios = require('axios'); 

路线很好地工作,但我可以不听任何事件,当我通过爱可信布线后提交它们(如果我提交帖子一个Artisan控制台命令的事件工作正常,我可以听到响应并将其输出到控制台)。

如果我在dd('test')的事件构造函数中,帖子路径输出test。 如果我在broadcastOn方法中使用dd('test'),则发布路由不会触发此功能。

+1

试试这个:取消'应用程序\供应商\ BroadcastServiceProvider ::类,'线'config> app.php'文件,并在.env文件中指定PUSHER_APP_ID,PUSHER_APP_KEY和PUSHER_APP_SECRET? –

+0

我已经取消了评论,并且我的'.env'文件设置正确,因为使用控制台命令可以正常工作。 – Imagine17

+0

下一步是在Pusher中查看您的集群信息。就我而言,它是'mt1'而不是'eu'。您可以在推送器仪表板中找到群集信息。 –

回答

0

如果有人有类似的问题,解决办法:不要使用Laravel Echo。

删除Echo,而是直接在您的主应用程序js之前拖入推进器(https://js.pusher.com/4.1/pusher.min.js)。然后,在bootstrap.js文件的底部:

window.Pusher = new Pusher('app-key', { 
    cluster: 'your-cluster', 
    encrypted: (true/false), 
    auth: { 
     headers: { 
      'X-CSRF-Token': token.content 
     } 
    } 
}); 

现在你可以做一些类似如下的内容:

var channel = Pusher.subscribe('channel-name'); 
channel.bind('broadcast-event-name', function(data) { 
    console.log(data); 
}); 
0

您可能需要在laravel-echo之前导入pusher-js

window.Pusher = require('pusher-js'); 

import Echo from 'laravel-echo'; 
+0

以前已经尝试过,它没有区别。 – Imagine17