我正在测试laravel / redis / socket.io消息传递功能。在初始设置过程中,我注意到echo.js(无论是NPM的版本还是GIT的“编译”到模块)都会导致错误。 “未捕获的ReferenceError:未定义Echo”
我很沮丧,因为从技术上讲应该可以使用,有帮助吗?
1)我已经使用了开箱即用的echo.js 2)我已经从GIT laravel-echo TypeScript存储库中构建了一个js包 3)我检查了脚本是否正在加载
window.Echo.channel('everywhere')
.listen('AnnouncementEvent', (e) => {
console.log(e);
});
我想找出一个应该起作用的解决方案中缺少的东西,并使echo.js开始在测试中起作用
答案 0 :(得分:0)
您在这里缺少一些拼图...
安装predis composer require predis/predis
安装类似https://github.com/tlaverdure/laravel-echo-server这样的socket.io服务器
安装socket.io客户端库npm install --save socket.io-client
在boostrap.js文件中实例化Echo:
import Echo from "laravel-echo"
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
});
答案 1 :(得分:0)
我已经解决了我的问题...我不确定它是否是正确的分析和解决方案,但是仍然有效。
使用laravel echo
版本发行了三个不同的echo*.js
文件:
echo.js
-一个ES5-ES6
模块,即使已设置type='module'
集,也无法在浏览器中工作
echo.iife.js
-库的浏览器兼容版本
echo.common.js
-一个nodejs
commonjs模块
我发现必须包含echo.iife.js
才能使此Javascript Echo
类在浏览器中正确注册并公开给脚本。