Pusher 未定义! Laravel 5.4 与 Laravel Echo

2024-01-10

我不知道我的代码有什么问题

这是我的app.js

/**
 * First we will load all of this project's JavaScript dependencies which
 * include Vue and Vue Resource. This gives a great starting point for
 * building robust, powerful web applications using Vue and Laravel.
 */

require('./bootstrap');

/**
 * Next, we will create a fresh Vue application instance and attach it to
 * the page. Then, you may begin adding components to this application
 * or customize the JavaScript scaffolding to fit your unique needs.
 */

Vue.component('chat-message', require('./components/ChatMessage.vue'));
Vue.component('chat-log', require('./components/ChatLog.vue'));
Vue.component('chat-composer', require('./components/ChatComposer.vue'));

let idIsExist = document.getElementById('chat-init');

if(idIsExist !== null) {
    const app = new Vue({
        el: '#chat-init',
        http: {
            emulateJSON: true,
            emulateHTTP: true
        },
        data: {
            messages: []
        },
        methods: {
            addMessage(message) {
                axios.post('page-send-message', message).then(response => {
                    if(response.status !== 200) {
                        message = {
                            messages: response.statusText,
                            user: {
                                name: response.status
                            }
                        }
                    }
                    return this.messages.push(message);
                });
            }
        },
        created() {
            axios.get('page-messages').then(response => {
                this.messages = response.data;
            });

            Echo.join('page-chat').here().joining().leaving().listen('MessagePosted', e => {
                console.log(e);
            });
        }
    });
}

Here's my `bootstrap.js` 

window._ = require('lodash');

/**
 * We'll load jQuery and the Bootstrap jQuery plugin which provides support
 * for JavaScript based Bootstrap features such as modals and tabs. This
 * code may be modified to fit the specific needs of your application.
 */

window.$ = window.jQuery = require('jquery');
require('bootstrap-sass');

/**
 * Vue is a modern JavaScript library for building interactive web interfaces
 * using reactive data binding and reusable components. Vue's API is clean
 * and simple, leaving you to focus on building your next great project.
 */

window.Vue = require('vue');
require('vue-resource');

/**
 * We'll register a HTTP interceptor to attach the "CSRF" header to each of
 * the outgoing requests issued by this application. The CSRF middleware
 * included with Laravel will automatically verify the header's value.
 */

// Laravel Global Variable to use Laravel.csrfToken
let csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

Vue.http.interceptors.push((request, next) => {
    request.headers.set('X-CSRF-TOKEN', csrfToken);
    next();
});

/**
 * We'll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the "XSRF" token cookie.
 */

window.axios = require('axios');

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN': csrfToken,
    'X-Requested-With': 'XMLHttpRequest'
};

这是我的bootstrap.js

/**
 * 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.Echo = new Echo({
    broadcaster: 'pusher',
    key: '3c45e6945c69f616f4a3'
});

这是我的活动MessagePosted.php

<?php

namespace App\Events;

use App\User;
use App\Message;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class MessagePosted implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     *
     * @var Message
     *
     */

    public $message;

    /**
     *
     * @var User
     *
     */

    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Message $message, User $user)
    {
        $this->message = $message;
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new PresenceChannel('page-chat');
    }
}

设置完成后,我在控制台中收到此错误

Uncaught ReferenceError: Pusher is not defined
    at PusherConnector.connect (eval at <anonymous> (app.js:345), <anonymous>:546:31)
    at PusherConnector.Connector (eval at <anonymous> (app.js:345), <anonymous>:192:14)
    at new PusherConnector (eval at <anonymous> (app.js:345), <anonymous>:537:135)
    at new Echo (eval at <anonymous> (app.js:345), <anonymous>:689:30)
    at eval (eval at <anonymous> (app.js:145), <anonymous>:59:15)
    at Object.<anonymous> (app.js:145)
    at __webpack_require__ (app.js:20)
    at eval (eval at <anonymous> (app.js:418), <anonymous>:8:1)
    at Object.<anonymous> (app.js:418)
    at __webpack_require__ (app.js:20)

我已经安装了独立性

composer require pusher/pusher-php-server
npm install --save laravel-echo pusher-js

你能帮忙解决我的问题吗?问题是 Pusher 没有定义,我不知道为什么。


在 bootstrap.js 文件中添加以下内容

import Pusher from "pusher-js"

此错误是由于 laravel 的更改所致,更多信息请参见此处https://github.com/laravel/echo/pull/110 https://github.com/laravel/echo/pull/110

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pusher 未定义! Laravel 5.4 与 Laravel Echo 的相关文章

  • 使用 Vue.js 确定放置坐标是否位于另一个元素上方?

    我正在使用vue 可拖动 可调整大小 https github com mauricius vue draggable resizable组件将给出 x y 偏移坐标 说明我的元素在页面上的放置位置 一切都很好 但是 我想知道是否有办法确定
  • Vue.js 2 - 从 body 标签中删除初始边距

    如果这是一个愚蠢的问题 我很抱歉 我对 Vue 还很陌生 我创建了一个 Vue 使用命令vue init webpack
  • 如何使 json 数据可用于我的 Vue 动态路由

    我有一个List我从中获取日期的组件db blogs json created fetch http localhost 3000 blogs then response gt return response json then data
  • 如何将复选框绑定到Vuex存储?

    我有一个包含一些复选框的组件 我需要能够访问从 Vue 应用程序中的其他组件检查了哪些复选框 但我无法弄清楚 也无法在网上找到 如何将复选框正确连接到我的 Vuex 商店 将组件内的复选框连接到 Vuex 存储的正确方法是什么 以便它们的行
  • Laravel 5.4 - 使用正则表达式进行验证[重复]

    这个问题在这里已经有答案了 以下是我的项目名称规则 this gt validate request projectName gt required regex a zA z d u 我正在尝试添加规则 使其必须以来信a z or A z可
  • 如何基于Vuetify创建自己的组件库

    我想基于 Vuetify 创建我的组件库并在 npm 上发布 Vuetify 已经有 vue plugin 标准安装并使用 vuetify loader 我认为这是一个比纯 HTML 组件更复杂的场景 例如 我想创建我的登录表单 my 文章
  • bootstrap-vue 与 b 表中的复选框相关的问题

    我在使复选框正常工作时遇到问题 为 选定 槽中的每一行呈现的复选框未绑定到正确的行 当您单击该复选框时 它将顶行的复选框设置为真 假位置 问题 1 如何将行复选框的真 假状态绑定到其行项目 我试图将其绑定到 data item select
  • 可以在 Vue 模板中渲染 VNode 吗?

    我遇到的情况是 我有一个渲染函数将一些数据传递到作用域槽 作为此数据的一部分 我想包含一些由渲染函数构造的 VNode 这些 VNode 可以选择由作用域插槽使用 无论如何 在模板中编写作用域槽以输出收到的原始 VNode 时是否存在 Vu
  • 如何在外部 .js 文件中分离 .vue 组件的方法?

    我的组件留下了许多行代码 因此我决定将这些方法放在一个名为functions js 的单独文件中 我无法调用这些方法 我试过这个 函数 js function sendList function getLists function dele
  • vuejs2复制剪贴板问题

    我正在尝试使用https alligator io vuejs vue clipboard copy https alligator io vuejs vue clipboard copy 对于 Vue js 中的复制剪贴板功能 它对于字符
  • 如何在 laravel/php 中访问该集合的内容

    我是 Laravel 的新手 正在做一个构建迷你社交网络应用程序的项目 我有一个与用户模型有关系的帖子模型 我有一个帖子页面 其中仅显示经过身份验证的用户及其朋友的帖子 在我的 PostController 中 我像这样查询经过身份验证的用
  • Vuejs - 如何使用 v-for 获取数组中的所有唯一值(删除重复项)

    如何只显示一个按钮distinct date 我可以使用两个 v for 循环吗 如何选择distinct我的循环中的值 div div
  • 如何在 Laravel 5.4 中使用 bootstrap 4?

    我在我的 laravel 应用程序上使用 npm 安装了 bootstrap 4 但我认为 bootstrap 3 的工作落后于 bootstrap 4 使用命令 npm install npm install email protecte
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 基于 json 文件动态显示选择、复选框、日期选择器等

    对我之前的问题的补充 我根据 json 文件动态显示输入字段 现在我想根据它们的组显示选择项 复选框和日期选择器 我如何解决这个问题 我需要将这些元素推入computeJSON 但写入例如选择options item selection不管
  • Vuex store.watch 只接受 Vue routerguard 中的函数

    我正在尝试观察并等待 Vue 路由器防护从 Vuex 获取最终值 但它会抛出异常 vuex store watch 只接受一个函数 这是代码 const isAdmin get store getters user isAdmin unde
  • Laravel Blade - 链/嵌入多种布局

    在我最喜欢的模板框架中 它们通常具有嵌套布局的能力 这在 Blade 中是可能的吗 例如 master blade php yield content 导航 blade php extend master
  • 动态更改 vuejs 2 中的选择输入选项

    如何动态更改选择下拉 v model 中的选项 我有 2 个选择输入 其中一个应该根据其他输入进行更改 例如 如果我选择 水果 则选择显示水果 如果我选择 蔬菜 则选择显示蔬菜 我不使用Vuejs 但查看文档后 var TypesArr F
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问
  • 如何在Vue.js中格式化当前日期格式

    我需要获取当前日期Vue js 为此 我使用了以下方法 today date new Date toJSON slice 0 10 replace g today date将给出日期2019 09 11格式 有什么方法可以自定义这种格式吗

随机推荐

  • 如何使用 EF4 Fluent API 将删除级联到链接表中?

    我在现有 MSSQL 2008 R2 数据库中有两个表 它们通过链接表关联 这两个表是 计划 和 提示 链接表是 PlanTipLinks 计划可以有许多提示 并且提示可以与多个计划关联 即 这是多对多的关系 在应用程序中 我只关心 Pla
  • 如何在wpf中使富文本框自动调整大小?

    如何让RichTextBox自动调整大小 我希望我的富文本框能够适合我分配给它的任何文本 而无需滚动条 谢谢 Set the HorizontalAlignment and VerticalAlignment除了Stretch 这是默认值
  • 如何向 iso 8583 消息添加使用 jpos 的标头。 - ISO 8583 - jpos

    我是使用 iso 8583 进行开发的新手 我需要在 iso 消息之前添加标头 但我以这种方式实现它们 并且不会将其添加到消息标头中 我究竟做错了什么 我希望你可以帮助我 GenericPackager packager new Gener
  • 异步写入文件

    有没有办法编写一个异步函数来重复将数据写入文件 当我编写异步函数时出现以下错误 该进程无法访问文件 c Temp Data txt 因为该文件正在被另一个进程使用 public void GoButton Click object send
  • 如何为

    我只有 HTML 和 CSS 的基本知识 并且广泛地浏览了 Google 试图找到这个问题的答案 这一切似乎都指向 JavaScript 和 或 jQuery 我试过了 但无法让它工作 我有一个音频文件 在我的网站加载时开始播放 我想设置一
  • 如何将

    转换为换行符?

    假设我有一个 HTML p and br 里面有标签 之后 我将剥离 HTML 以清理标签 我怎样才能把它们变成换行符 我正在使用Python的美丽汤 http www crummy com software BeautifulSoup 图
  • 如何在 REST 中处理 @OneToMany 关系

    我正在设计一个小REST允许执行一些基本操作的应用程序 到目前为止一切顺利 我有以下 Entity called Client需要与 Entity called Loan Client Entity Table name clients p
  • 升级到 PyMongo 3.0 导致 ServerSelectionTimeoutError

    我最近将 Bottle uWSGI Nginx 应用程序升级到 MongoDB 3 0 2 它在 PyMongo 2 8 上运行良好 但今天我通过运行以下命令升级到 PyMongo 3 0 pip install upgrade pymon
  • 三次 Hermite 样条插值 python

    我想计算一个三次多项式 该多项式由其函数值和指定点的导数定义 https en wikipedia org wiki Cubic Hermite spline https en wikipedia org wiki Cubic Hermit
  • 如何计算正确的 apkCertificateDigestSha256 有权访问证书?

    SafetyNet 文档 https developer android com training safetynet attestation https developer android com training safetynet a
  • “转到定义”始终位于 VSCode 的新选项卡中

    我在 MAC BigSur 上安装了 VSCode 每当我单击 转到定义 时 它应该以new标签 如何实现这一目标 目前 仅当定义存在于另一个文件中时 定义才会在新选项卡中打开 否则 如果存在于同一文件中 它将滚动到同一文件中不需要的定义
  • Foursquare API 用于解决场地用户图像错误

    Foursquare API 已将用户的照片标签分为前缀和后缀 但是 如果我将它们合并以形成完整的图像 URL 并将其粘贴到浏览器中 则会出现错误 提示图像无法显示 因为它包含错误 是服务器暂时不可用还是其他原因 我正在使用 API 获取场
  • 将 editorfor 转换为下拉列表时出现问题

    请在这里查看达林的解决方案 将 HTML EditorFor 转换为下拉列表 html dropdownfor https stackoverflow com questions 9517627 converting html editor
  • 为什么 TOP 或 SET ROWCOUNT 使我的查询如此慢?

    我有一个包含大约 1400 万行的 SQL Server 2008 数据库 里面有两张桌子 Table1 rowId int primary key someData1 int someData2 int Table2 id int pri
  • 有没有办法使用 CSS3 渐变并回退到 PNG?

    如何将 CSS3 渐变用于背景图像 并在不支持渐变的情况下回退到 PNG 图像 干得好 不支持 CSS3 渐变的浏览器将仅使用图像 div background color 1a82f7 fallback color background
  • javascript倒计时并显示毫秒

    我想要倒计时 并希望显示类似分钟 秒 毫秒的格式 我用jquery插件倒计时了倒数 http keith wood name countdown html但它只显示分钟 秒格式 有什么办法可以纠正吗 非常感谢 大家好 我已经为自己开发了一个
  • 使用 ruby​​ 流式传输并解压大型 csv 文件

    我遇到问题 需要下载 解压缩 然后逐行处理一个非常大的 CSV 文件 我认为让您了解文件有多大很有用 big file zip 700mb big file csv 23gb 这是我希望发生的一些事情 解压前不必下载整个文件 在解析 csv
  • React:将组件状态值复制到剪贴板,无需虚拟元素

    在我的项目中 有一个用例 用户单击一个按钮 然后将一些数据复制到剪贴板以进行下一步 复制的数据与点击的按钮相关 并存储在组件状态中 我做了一些搜索 找到了可能的解决方案 如下所示 function copyToClipboard text
  • 限制模板实例化中的参数类型

    如果我的库的用户尝试使用不合适的类型实例化模板 我将尝试触发编译时错误 我已经实施了 template
  • Pusher 未定义! Laravel 5.4 与 Laravel Echo

    我不知道我的代码有什么问题 这是我的app js First we will load all of this project s JavaScript dependencies which include Vue and Vue Reso