2017-08-10 17 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 
    ], 
], 

私は自分のlocalhost上にあり、複数のチュートリアルやさまざまなバリエーションを試してみましたが、問題を解決したことはありません。アプリケーションはすべてのget apiルートを正しくロードしますが、ログインしようとすると500エラーが発生します。

影響を受ける場合は、Vue & VueRouterも使用しています。

EDIT

何かがaxiosで送らCsrfTokenに干渉しているようです。私は私のbootstrap.jsファイルを再配置した場合、エコーはaxios前に輸入されるように:

import Echo from 'laravel-echo'; 
etc. 

window.axios = require('axios'); 

ルートは、私が提出した場合、私は(axiosポスト経路を介してそれらを送信したときが、私はすべてのイベントを聞くことができません完璧に動作ポストArtisanのコンソールコマンドでイベントが正常に動作し、応答を聞いてコンソールに出力できます)。

コンストラクタイベントでI dd('test')の場合、ポストルートはtestを出力します。 broadcastOnメソッド内のdd('test')の場合、ポストルートはこの関数にヒットしません。

+1

は、このいずれかを試してみてください'config> app.php'ファイルを開き、.ENVファイルにPUSHER_APP_ID、PUSHER_APP_KEY、およびPUSHER_APP_SECRETを指定しましたか? –

+0

私は既にコメントを解除しています。コンソールコマンドを使ってイベントが正常に機能するので、 '.env'ファイルが正しく設定されています。 – Imagine17

+0

次のステップは、Pusherでクラスタ情報をチェックアウトすることです。私の場合、 'eu'ではなく' mt1'です。プッシャーダッシュボードでクラスター情報を見つけることができます。 –

答えて

0

誰でも同様の問題がある場合は、解決策:Laravel Echoを使用しないでください。

メインアプリケーションjsの前にEchoを削除し、代わりにPusher(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 
     } 
    } 
}); 

は今、あなたは次のような何かを行うことができます:\ BroadcastServiceProvider ::クラス、 `ラインでのコメントを外し、`のApp \プロバイダ:

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

関連する問題