前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lumen安装Horizon

lumen安装Horizon

作者头像
魔王卷子
修改2020-05-26 16:40:52
1.8K8
修改2020-05-26 16:40:52
举报

昨天领导告诉我,要安装Horizon。但是我们使用的是lumen,官方的Horizon并不支持lumen。所以又去找第三方,结果发现已经八个月没有更新了。无奈尝试自己维护。发现一堆坑。根本填不完。今天早上想着去packagist去淘淘。还真让我发现了一个正在维护的: horizon-lumen

一切安装就按照README.md上面的步骤进行安装就好了。

再此说下,中间碰到的坑。

在执行如下命令:

代码语言:txt
复制
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

出现如下错误:

代码语言:txt
复制
In Facade.php line 218:

  A facade root has not been set.

经过查询发现解决方案是在boorstrap/app.php中的注释:

代码语言:txt
复制
$app->withFacades(); // 去掉这一行的注释

我发现这一行已经开启了,但是还是出现这个错误。然后我发现这一块的代码几乎放在了该文件的最后,所以我将其提到了文件的最前面,如下所示:

代码语言:txt
复制
$app->withEloquent(); // 这一行的下面

$app->withFacades(true,[
    'Tymon\JWTAuth\Facades\JWTAuth'             => 'JWTAuth',
    'Tymon\JWTAuth\Facades\JWTFactory'          => 'JWTFactory',
    'ZanySoft\Zip\ZipFacade' => 'Zip',
    App\Providers\RongCloudServiceProvider::class =>  'RongCloud',
]);

这样就能正常安装上了。

还有一个问题是在访问仪表盘的时候,结果html代码是以文本来显示的。并没有使用html的方式展示内容。

经过分析,发现返回的header中没有Content-type选项。

所以写了一个中间件。代码如下:

代码语言:txt
复制
<?php
/**
 * file path: app/Http/Middleware/HtmlMiddleware.php
 */
namespace App\Http\Middleware;
use Closure;

class HtmlMiddleware
{
    /**
     * 运行请求过滤器
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        if (is_null($response->headers->get("Content-Type"))) { // 当为空的时候才会添加header
            $response->header("Content-Type", "text/html; charset=UTF-8");
        }

        return $response;
    }
}

因为我这边使用了dingo,所以加上如上判断。

最后修改bootstrap/app.php中的一处:

代码语言:txt
复制
$app->middleware([
    \App\Http\Middleware\HtmlMiddleware::class,
]);

一切大功告成。

后记:

在分享给同事使用的时候,同事说出现这么一个错误:

代码语言:txt
复制
The Mix manifest does not exist

在我本地是正常啊,为啥同事就是不行呢。研究了半天。发现原因了。

因为在public文件夹里面有vendor文件夹。但是正好.gitignore中有一条规则将vendor/给忽略了。所以需要执行以下命令:

代码语言:txt
复制
git add public/vendor -f # 强制加入git版本追踪

提交之后,让同事拉取代码,再去执行就可以了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-142,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档