将避难所添加到现有项目时无法找到可发布的资源
Posted
技术标签:
【中文标题】将避难所添加到现有项目时无法找到可发布的资源【英文标题】:Unable to locate publishable resource when adding sanctum to existing project 【发布时间】:2021-07-12 02:06:46 【问题描述】:Laravel Sanctum documentation 声明要将 Sanctum 添加到现有的 Laravel 项目中,必须:
-
需要 Laravel Sanctum
composer require laravel/sanctum
将 Sanctum 的资源发布到应用程序目录php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
我在运行时收到Unable to locate publishable resources.
(2)
我已经按顺序尝试了php artisan clear-compiled
和composer dumpautoload
我检查了vendor/laravel/sanctum/src/SanctumServiceProvider.php
存在,并且 boot() 方法确实发布了 Sanctum 的配置和迁移
我还通过确保源路径在autoload_classmap.php
中列出来检查自动加载是否发现了 SanctumServiceProvider
同样,这是将 Sanctum 添加到现有 Laravel 项目的尝试
我错过了什么吗?
我的设置:
Laravel 8.37 PHP 7.3.9 作曲家 2.0.12【问题讨论】:
【参考方案1】:我已经设法解决了我的问题。
简答:
在composer require laravel/sanctum
之后执行此操作:
-
备份或重命名
cache/services.php
删除cache/services.php
运行php artisan
。似乎以任何方式运行工匠都会重新生成cache/services.php
之后,继续官方文档(发布、迁移等)
更长的解释
不完全确定发生了什么。但显然所有发现的service provider 都缓存在cache/services.php
中。
我不知道它是如何生成的,以及服务提供商是如何被发现的。谷歌搜索没有为我提供任何关于该文件的文档(官方或其他)。
我想如果我将 Sanctum 的 SP 添加到 config/app.php
(即添加服务提供者的记录方式),它将被发现并缓存。显然情况并非如此。删除和重新生成cache/services.php
是我发现工作的唯一方法。文件重新生成后,列出了Sanctum的SP。
我观察到的一件事是,这只发生在现有项目上(存在于已经在处理、添加的包、配置更改等)。如果我将 Sanctum 添加到新项目中,则不会发生。
【讨论】:
以上是关于将避难所添加到现有项目时无法找到可发布的资源的主要内容,如果未能解决你的问题,请参考以下文章
如何将新项目添加到 ARC Advanced Rest Client 独立版本