【问题标题】:Laravel event() not working in productionLaravel 事件()在生产中不起作用
【发布时间】:2021-04-01 09:22:54
【问题描述】:

我正在尝试通过 forge 和 digitalocean 部署我的 laravel 项目。虽然它在我的本地开发环境中运行良好,但我很难让 laravel-websockets 包运行。

因此,虽然我的“CruiseCrontroller”在本地运行良好,但不知何故在生产中给了我以下错误。

[2020-12-22 15:42:00] production.ERROR: Class 'App\Events\newRoom' not found {"exception":"[object] (Error(code: 0): Class 'App\\Events\newRoom' not found at /home/forge/default/app/Http/Controllers/CruiseController.php:49)

这是 CruiseController 中提到的行:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Events\newRoom;
use App\Events\RoomStatusUpdate;
use App\Room;
use App\Sailor;
use Carbon\Carbon;

class CruiseController extends Controller
{
    public function newRoom(Request $request){
   
    ...
    event(new NewRoom($room->channel_id));
}
...

我现在用谷歌搜索并通过 stackoverflow 搜索了 2 小时,希望这里有人能指出我正确的方向。谢谢

【问题讨论】:

  • newRoom 看起来像什么?此外,从它的类名来看,它可能违反 PSR-4/0,这将阻止它被添加到 composer 2 中的自动加载器
  • 另外,请记住,您已导入 newRoom,但随后调用了不存在的 new NewRoom
  • 在您的命名和大小写用法上保持一致...您有App\Events\RoomStatusUpdate,这是正确的大小写,但也有App\Events\newRoom,这是不正确的大小写。那应该是NewRoom,您在下面正确引用了它。到处都是:P

标签: laravel laravel-events laravel-websockets


【解决方案1】:

大小写在区分大小写的文件系统中很重要。您导入以下类:

use App\Events\newRoom;

你应该导入

use App\Events\NewRoom;

自动加载器尝试查找newRoom.php 文件但未能找到,因为该名称的文件不存在。

【讨论】:

  • 您对案例的使用是正确的。但是改变它并不能修复错误......
  • 在这种情况下,看看你是否有 NewRoom.php 文件并在里面声明了 NewRoom 类。
  • 已重新部署并正在运行。那么实际上如果有另一个错误,但那是另一种情况......谢谢你的帮助!
猜你喜欢
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 2023-04-05
  • 2018-04-14
相关资源
最近更新 更多