Как я могу решить Class Pusher не существует ошибки? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать приложение для чата в реальном времени, используя Pusher, на основе учебника, найденного здесь: https://pusher -community.github.io / real-time-laravel / chat / chat.html

Локально (Windows), кажется, все работает нормально, однако, когда я пытаюсь развернуть его на сервере Linux, все работает не так хорошо, и я получаю следующую ошибку:

Class pusher does not exist {"exception":"[object] (ReflectionException(code: -1): Class pusher does not exist at /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php:779)
[stacktrace]
#0 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(779): ReflectionClass->__construct('pusher')
#1 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(658): Illuminate\\Container\\Container->build('pusher')
#2 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Container/Container.php(609): Illuminate\\Container\\Container->resolve('pusher', Array)
#3 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(759): Illuminate\\Container\\Container->make('pusher', Array)
#4 /home/tgbinfo/public_html/system/applications/erp2/example/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(237): Illuminate\\Foundation\\Application->make('pusher')
#5 /home/tgbinfo/public_html/system/applications/erp2/example/app/Http/Controllers/ChatController.php(23): Illuminate\\Support\\Facades\\Facade::__callStatic('make', Array)
#6 [internal function]: App\\Http\\Controllers\\ChatController->__construct()

Вызвано методом конструкции ChatController, в частности строки App: make ('pusher'):

public function __construct()
{
    $this->pusher = App::make('pusher');
    $this->user = Session::get('user');
    $this->chatChannel = self::DEFAULT_CHAT_CHANNEL;
}

В Javascript все по-прежнему хорошо, я все еще получаю правильные сообщения для подключения к Pusher.

Pusher : State changed : connecting -> connected with new socket ID ####
Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"chat-1429-3653"}}

Я читал в интернете и уже пробовал некоторые из следующих вещей:

  • Используйте chmod 777 в папке начальной загрузки / кэша.
  • Композитор дамп-автозагрузка
  • Очистить кеш и конфиги ремесленника
  • Переустановлен толкатель с использованием композитора
  • Проверен на различия в .env-файле локально и на сервере, они идентичны
  • Добавлен 'Pusher' => Pusher \ Pusher :: class для псевдонимов в app.php

Соответствующий .env-код:

BROADCAST_DRIVER=pusher

Composer.json:

    "pusher/pusher-http-laravel": "^4.2",

broadcasting.php:

'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env( 'PUSHER_APP_CLUSTER' ),
            'encrypted' => false,
        ],
    ],

Есть идеи, как я могу решить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Я решил собственную проблему, похоже, файлы packages.php и services.php в bootstrap/cache не обновлялись даже после запуска нескольких команд artisan cache:clear и artistan config:cache.В конце я удалил оба файла и снова запустил artisan cache:clear.Вновь сгенерированные файлы содержали информацию, необходимую Laravel.

0 голосов
/ 11 июня 2019

Возможно, вы не обновили зависимость от сервера. Используйте команду «composer install» для установки всех зависимостей. Затем пользователь "composer dump-autoload" перезагрузит все зависимости.

...