Laravel会产生错误" Echo is Echo未定义"

时间:2017-01-20 06:11:50

标签: laravel-5.3 laravel-echo

我正在与Laravel Event Broadcasting合作,我正在使用推送器驱动器来播放事件并且它的工作非常完美。

使用pusher提供的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时

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'
});

所以请帮助我如何解决这个问题。

4 个答案:

答案 0 :(得分:0)

几天前我遇到了这个问题。我的gulp安装完全搞砸了,Laravel版本没有帮助。

很抱歉,如果这没有帮助,那只是我的经验,并且尽可能详细:

首先,我会认为你的网站上有js / app.js脚本。

现在,你看到了这个错误,因为正如Josh所说,你没有编译你的js文件。在编辑'resources / assets / js / bootstrap.js'之后,需要通过运行资产编译器来编译该文件:gulp(在Laravel 5.3中命名为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上没有提到gulp。)

要实现此目标,您应更新latest package.json on 5.4关注 5.4文档以安装Laravel Mix。

答案 1 :(得分:0)

您的代码看起来很好,问题是您的JS订单,所以只有您得到未定义的问题

喜欢

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


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

如此曲折的顺序:)

答案 2 :(得分:0)

每个Echo之前的寡妇对象。

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

答案 3 :(得分:0)

我的问题是我没有将bootstrap.js与其余代码一起编译,因为我已从require('./bootstrap')删除了行app.js。我添加了那条线,我回家干了。 As described here