2017-01-20 49 views
1

我正在使用Laravel Event Broadcasting,並且我正在使用pusher驅動程序進行廣播事件並且其工作完美。Laravel生成一個錯誤「Echo is Echo is not defined」

公共通道被成功地從客戶端使用推進器提供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); 
    }); 

它生成錯誤使用echo「回聲不定義「。

我已經在我的應用程序中使用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'後,需要通過在Laravel 5.3中運行資產編譯器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遵循 5.4文檔來安裝Laravel混合。

+0

感謝您的回答@alecuys其實我已經修復它,問題是,我實際上在我的頁面底部加載了我的'js/app.js'腳本,並且試圖在實際腳本加載之前獲取echo實例的功能:P –

+0

太棒了!所以一口氣運行良好。做得好!! – alecuys

0

你的代碼看起來不錯,問題是你的JS爲了使只有你得到不確定的問題

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


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

如此曲折的順序:)每個ECHO之前

+0

感謝@kali達斯我解決了它,是的我的js命令的問題 –

0

寡婦對象。

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

我的問題是,我沒有與代碼的其餘部分編譯bootstrap.js在一起,因爲我已經從app.js刪除線require('./bootstrap')。我添加了這條線,我回家了,幹了。 As described here

相關問題