首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Echo "Echo is not defined“

Laravel Echo "Echo is not defined“
EN

Stack Overflow用户
提问于 2018-12-26 00:02:15
回答 4查看 6.6K关注 0票数 7

首先,感谢您的阅读。让我来解释一下我所面临的问题。所以我成功地安装了Pusher和Laravel Echo,并尝试在我的dash.blade.php中使用它,这就是我导入app.js文件的方式:<script src="{{ asset('js/app')}}"></script>。在那之后,我使用了这个:

代码语言:javascript
复制
<script>
  Echo.channel('channelDemoEvent')
    .listen('eventTrigger', (e) => {
      alert('Its working');
    });
</script>

在运行它时,我在chrome控制台中得到这个错误:Uncaught ReferenceError: Echo is not defined

我现在在互联网上搜索了2个多小时,当我在Echo之前添加window.时,我得到了一个不同的错误,那个错误是这样的:Uncaught TypeError: Cannot read property 'channel' of undefined我试图在app.js上评论这些错误,因为我读到可能会导致这个错误:Vue.component('example-component', require('./components/ExampleComponent.vue')); window.Vue = require('vue');

代码语言:javascript
复制
const app = new Vue({
el: '#app',
});`

在对它们进行注释之后,我得到了相同的错误。感谢您的阅读&祝您有愉快的一天。

EN

回答 4

Stack Overflow用户

发布于 2019-10-04 14:41:28

以下是步骤

作曲家

如果您使用的是pusher,请安装pusher

代码语言:javascript
复制
composer require pusher/pusher-php-server "~4.0"

NPM或纱线

代码语言:javascript
复制
npm install --save laravel-echo pusher-js

如果不使用pusher,那么

代码语言:javascript
复制
npm install --save socket.io-client

刀片

确保您的模板具有csrf标记,如下所示

代码语言:javascript
复制
<meta name="csrf-token" content="{{ csrf_token() }}">

.env

在.env中,您应该填写推送器信息

代码语言:javascript
复制
PUSHER_APP_ID=yourpusherappid
PUSHER_APP_KEY=yourpusherappkey
PUSHER_APP_SECRET=yourpusherappsecret
PUSHER_APP_CLUSTER=yourpusherappcluster

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

webpack.mix.js

在webpack.mix.js中

确保你有

代码语言:javascript
复制
const mix = require("laravel-mix");
require("dotenv").config();

bootstrap.js

在resources/js/bootstrap.js中

请确保您已取消注释

代码语言:javascript
复制
/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

import Echo from "laravel-echo";

window.Pusher = require("pusher-js");

window.Echo = new Echo({
    broadcaster: "pusher",
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    encrypted: true
});

编译

不要忘记重新编译您的js文件

代码语言:javascript
复制
NPM run watch 
NPM run dev 
NPM run prod 

配置缓存

有时,您可能需要清除缓存才能使更改生效运行以下命令

代码语言:javascript
复制
php artisan config:clear

感谢您的好评

票数 8
EN

Stack Overflow用户

发布于 2018-12-26 09:23:58

以下是您可以检查/执行的一些可能解决您的问题的方法:

确保已在bootstrap.js中取消对这些行的注释(

bootstrap.js

代码语言:javascript
复制
import Echo from 'laravel-echo'

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    encrypted: true
});

  • 您在进行更改后是否运行了npm run devnpm run prodnpm run watch
  • 我对您的js导入没有信心。asset('js/app')将返回http://localhost/js/app。您可能必须在最后添加.js才能正确导入所有内容。
  • 检查js/app.js导入内容是否位于<script></script>标记之前。
票数 0
EN

Stack Overflow用户

发布于 2021-01-08 09:33:53

请遵循下面的代码序列

  1. first set window variable
  2. second config vue

代码语言:javascript
复制
window.Echo = new Echo({
  broadcaster: 'socket.io',
  host: 'http://127.0.0.1:6001'
})
Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53923831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档