2017-01-20 9 views
1

私はLaravel Event Broadcastingで作業していますが、イベントを送信するためのプッシャードライバとその動​​作が完璧です。Laravelは "エコーはエコーが定義されていません"というエラーを生成します

公共チャンネルは、プッシャーがjsライブラリ

var pusher = new Pusher('xxxxxxxxxxxxxxxxxxxxx_my_app_key', { 
    encrypted: true 
}); 

var channel = pusher.subscribe('TestPusher'); 
    channel.bind('App\\Events\\TestPusher', function(data) { 
alert(data.msg); 
}); 

を提供使用してクライアント側から首尾よく購読されているが、私は私のクライアント側のコードは、エラーが発生し

Echo.channel('TestPusher') 
    .listen('TestPusher', (e) => { 
     console.log(e.msg, e.chatMessage); 
    }); 

でエコーを使用する場合、「エコーではありません定義された "。

私のアプリケーションにnpm install --save laravel-echo pusher-jsを使用してLaravel Echoライブラリをインストールしました。さらに、laravel提供のドキュメントに従ってresources/assets/js/bootstrap.jsファイルに次のコードを含めました。

import Echo from "laravel-echo" 

window.Echo = new Echo({ 
    broadcaster: 'pusher', 
    key: 'xxxxxxxxxxxxxxxxxxxxx_my_app_key' 
}); 

この問題を解決する方法を教えてください。

+1

[リンク](https://mattstauffer.co/blog/introducing-laravel-echo)をご覧ください。あなたはそれを使用するために火花を得る。 – JUL2791

+0

ありがとう@iDroidしかし、私はすでにこのリンクを試みたが、私のために働いていない私にこれについて具体的な説明を与えることができますか? –

+1

gulpを使用してアセットをコンパイルする必要があります。 –

答えて

0

数日前にこの問題が発生しました。私のギャルのインストールはすべてうんざりしてしまい、Laravelのバージョン管理は役に立たなかった。これが解決しない場合は

申し訳ありませんが、それはちょうど私の経験と可能な限り最も詳細です:

まず、私はあなたがjsファイルを持っている検討します/スクリプトは、あなたのサイトに含まapp.js。

Joshが述べたように、jsファイルをコンパイルしていないため、このエラーが表示されます。 'resources/assets/js/bootstrap.js'を編集した後、アセットコンパイラ:gulp(Laravel Elixir docs/5.3/elixir)を実行してこのファイルをコンパイルする必要があります。

チュートリアルのこの部分を注意深く読んだら、laravelのnpm依存バージョン、特にElixirで使用されているバージョンに特に注意する必要があります(エラーメッセージが表示されなくてもgulpのインストールはまったく機能しませんでした)。

これが新しいプロジェクトの場合は、Laravel 5.4にアップデートすることを検討する必要があります。 Laravelのすべてのフレームワークを更新できない場合やそうでない場合は、おそらくこれは私のように解決できます。 5.3にとどまっていますが、最新の資産コンパイラ5.4を使用して、Laravel Mixという名前を付けました。今度はnpm:npm run devで動作します。

このを達成するために(DOCに言及した。何ゴクゴク)は、あなたがlatest package.json on 5.4を更新しないとLaravelミックスをインストールする 5.4のドキュメントに従ってください。

+0

私のページの一番下に私の 'js/app.js'スクリプトが実際にロードされました。実際のスクリプトがロードされる前にエコーインスタンスの機能を取得しようとしています。 :P –

+0

素晴らしい!だからギャルプはうまく走っていた。よくやった!! – alecuys

0

あなたのコードは正常に見える、問題はそのため:)各エコーの前に

+0

ありがとう@kaliダス私はそれを解決し、はい私のjs命令で問題 –

0

未亡人オブジェクトをジグザグこれだけあなたが

<script> 
Echo.channel('TestPusher') 
    .listen('TestPusher', (e) => { 
     console.log(e.msg, e.chatMessage); 
    }); 
</script> 


<script src="echo.js"></script> 

のように未定義の問題

を取得し、あなたのJSのオーダーです。

window.Echo.channel('TestPusher') 
    .listen('TestPusher', (e) => { 
     console.log(e.msg, e.chatMessage); 
    }); 
0

私の問題は、私はapp.jsからラインrequire('./bootstrap')を削除していたので、私は、コードの残りの部分と一緒にbootstrap.jsをコンパイルしていなかったということでした。私はそのラインを戻して、私は家にいて乾いていた。 As described here

関連する問題