我正在与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'
});
所以请帮助我如何解决这个问题。
答案 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