2017-01-20 4 views
1

Я работаю с трансляцией событий Laravel, и я использую драйвер pusher для трансляции события и его работы отлично.Laravel генерирует ошибку «Echo is Echo is not defined»

Общественный канал успешно подписан со стороны клиента с помощью толкателя при условии 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 не является определенный ".

Я уже установил библиотеку Laravel Echo, используя npm install --save laravel-echo pusher-js в своем приложении, а также включил следующий код в файл resources/assets/js/bootstrap.js в соответствии с документом laravel.

import Echo from "laravel-echo" 

window.Echo = new Echo({ 
    broadcaster: 'pusher', 
    key: 'xxxxxxxxxxxxxxxxxxxxx_my_app_key' 
}); 

Так что, пожалуйста, помогите мне, как я могу исправить эту проблему.

+1

Проверьте это [ссылка] (https://mattstauffer.co/blog/introducing-laravel-echo). У вас есть искра, чтобы использовать ее. – JUL2791

+0

спасибо @iDroid, но я уже пробовал эту ссылку, но не работал для меня, можете ли вы дать мне конкретные объяснения по этому поводу? –

+1

Вы должны попробовать использовать глоток для компиляции своих активов, если вы еще этого не сделали. –

ответ

0

У меня была эта проблема несколько дней назад. Моя установка gulp была перепутана, и управление версиями Laravel не помогло.

Извините, если это не поможет, это только мой опыт и наиболее подробно, как это возможно:

Во-первых, я буду считать вас есть JS/app.js скрипт включен на вашем сайте.

Теперь вы видите эту ошибку, потому что, как сказал Джош, вы не компилируете свои js-файлы. После редактирования «resources/assets/js/bootstrap.js» этот файл необходимо скомпилировать, запустив компилятор: gulp (названный Laravel Elixir docs/5.3/elixir) в Laravel 5.3).

Если вы внимательно следили за этой частью учебников, вы должны быть осторожны с версиями зависимостей laravel npm, особенно теми, которые используются Elixir (Еще раз, моя установка gulp не работала вообще, хотя сообщений об ошибках не появилось).

Итак, если это новый проект, вам следует рассмотреть возможность обновления до Laravel 5.4. Если вы не можете или не хотите обновлять всю структуру Laravel, возможно, это можно решить, как я. Пребывание в 5.3, но с использованием последнего компилятора активов 5.4, названного Laravel Mix. Теперь он работает на npm: npm run dev. (Нет глоток не упоминается о доке.)

Для достижения этой, вы должны обновления к latest package.json on 5.4 и следовать 5.4 документации для установки Laravel Mix.

+0

спасибо за ваш ответ @alecuys, на самом деле я уже исправил его, проблема была в том, что я действительно загрузил сценарий js/app.js в нижней части моей страницы, и я пытаюсь получить функциональность экземпляра эха до фактической загрузки скрипта : P –

+0

Отлично! Так что глоток был хорош. Отлично сработано!! – alecuys

0

Ваших коды выглядят нормально, проблема вашего JS заказ так только вы получаете неопределенные вопросы

как

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


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

так зигзаг заказ :)

+0

спасибо @kali Dass, я решил это и да, проблема с моим заказом js –

0

вдовы объекта перед каждым Echo.

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

Мой вопрос заключается в том, что я не компиляции bootstrap.js вместе с остальной частью кода, потому что я удалил линию require('./bootstrap') от app.js. Я добавил эту линию назад, и я был дома и сухим. As described here