将 sanctum 添加到现有项目时无法找到可发布的资源

Unable to locate publishable resource when adding sanctum to existing project

Laravel Sanctum documentation 声明要将 Sanctum 添加到现有 Laravel 项目,必须:

  1. 需要LaravelSanctumcomposer require laravel/sanctum
  2. 将Sanctum的资源发布到应用程序目录php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

当 运行 (2)

时我得到 Unable to locate publishable resources.

我已经按照 php artisan clear-compiledcomposer dumpautoload 的顺序试过了

我检查了 vendor/laravel/sanctum/src/SanctumServiceProvider.php 存在并且 boot() 方法确实发布了 Sanctum 的配置和迁移

我还通过确保源路径在 autoload_classmap.php

中列出,检查了自动加载是否发现了 SanctumServiceProvider

同样,这是将 Sanctum 添加到现有 Laravel 项目的尝试

我是不是漏掉了什么?

我的设置:

我已经解决了我的问题。

简答:

composer require laravel/sanctum 之后执行此操作:

  1. 备份或重命名cache/services.php
  2. 删除cache/services.php
  3. 运行php artisan。似乎 运行 artisan 以任何方式重新生成 cache/services.php

之后,继续官方文档(发布、迁移等)

更长的解释

不完全确定发生了什么。但显然所有发现的 service provider 都缓存在 cache/services.php.

我不知道它是如何生成的,也不知道服务提供商是如何被发现的。谷歌搜索没有给我任何关于该文件的文件(官方或其他文件)。

我想如果我将 Sanctum 的 SP 添加到 config/app.php(即记录的添加服务提供商的方式),它将被发现并缓存。显然不是这样。删除并重新生成 cache/services.php 是我发现的唯一可行方法。重新生成文件后,列出Sanctum的SP。

我观察到的一件事是,这只发生在现有项目上(现有项目已经在处理、添加包、配置更改等)。如果我将 Sanctum 添加到新项目,则不会发生。