imt*_*ode 11 php laravel composer-php
使用Laravel 8.75并尝试将composer.json中的php 8.1升级为“php”:“^8.1”并收到错误 Illuminate\\Contracts\\Container\\BindingResolutionException - 目标类 [CommandMakeCommand] 不存在。
\nLoading composer repositories with package information\nUpdating dependencies\nNothing to modify in lock file\nInstalling dependencies from lock file (including require-dev)\nNothing to install, update or remove\nPackage swiftmailer/swiftmailer is abandoned, you should avoid using it. \nUse symfony/mailer instead.\nGenerating optimized autoload files\n \nIlluminate\\Foundation\\ComposerScripts::postAutoloadDump\n@php artisan package:discover --ansi\n\nIlluminate\\Contracts\\Container\\BindingResolutionException\n\nTarget class [CommandMakeCommand] does not exist.\n\nat \nRun Code Online (Sandbox Code Playgroud)\n供应商/laravel/framework/src/Illuminate/Container/Container.php:879
\n875\xe2\x96\x95\n876\xe2\x96\x95 try {\n877\xe2\x96\x95 $reflector = new ReflectionClass($concrete);\n878\xe2\x96\x95 } catch (ReflectionException $e) {\n879\xe2\x96\x95 throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);\n880\xe2\x96\x95 }\n881\xe2\x96\x95\n882\xe2\x96\x95 // If the type is not instantiable, the developer is attempting to resolve\n883\xe2\x96\x95 // an abstract type such as an Interface or Abstract Class and there is\n\n +13 vendor frames\n 14 artisan:37\n Illuminate\\Foundation\\Console\\Kernel::handle()\nScript @php artisan package:discover --ansi handling the post-autoload- \ndump event returned with error code 1\nRun Code Online (Sandbox Code Playgroud)\n
Far*_*had 19
我也有同样的问题,在我的例子中,nwidart/laravel-modules 包升级到 8.3 版本,我降级到 8.2 版本,问题解决了
请参阅此处: https: //docs.laravelmodules.com/v9/introduction
如果您有现有的配置文件,并且会收到错误消息:
Target class [CommandMakeCommand] does not exist
然后配置文件需要首先更新导入命令类:
use Nwidart\Modules\Commands;
接下来将命令数组替换为:
'commands' => [
Commands\CommandMakeCommand::class,
Commands\ComponentClassMakeCommand::class,
Commands\ComponentViewMakeCommand::class,
Commands\ControllerMakeCommand::class,
Commands\DisableCommand::class,
Commands\DumpCommand::class,
Commands\EnableCommand::class,
Commands\EventMakeCommand::class,
Commands\JobMakeCommand::class,
Commands\ListenerMakeCommand::class,
Commands\MailMakeCommand::class,
Commands\MiddlewareMakeCommand::class,
Commands\NotificationMakeCommand::class,
Commands\ProviderMakeCommand::class,
Commands\RouteProviderMakeCommand::class,
Commands\InstallCommand::class,
Commands\ListCommand::class,
Commands\ModuleDeleteCommand::class,
Commands\ModuleMakeCommand::class,
Commands\FactoryMakeCommand::class,
Commands\PolicyMakeCommand::class,
Commands\RequestMakeCommand::class,
Commands\RuleMakeCommand::class,
Commands\MigrateCommand::class,
Commands\MigrateRefreshCommand::class,
Commands\MigrateResetCommand::class,
Commands\MigrateRollbackCommand::class,
Commands\MigrateStatusCommand::class,
Commands\MigrationMakeCommand::class,
Commands\ModelMakeCommand::class,
Commands\PublishCommand::class,
Commands\PublishConfigurationCommand::class,
Commands\PublishMigrationCommand::class,
Commands\PublishTranslationCommand::class,
Commands\SeedCommand::class,
Commands\SeedMakeCommand::class,
Commands\SetupCommand::class,
Commands\UnUseCommand::class,
Commands\UpdateCommand::class,
Commands\UseCommand::class,
Commands\ResourceMakeCommand::class,
Commands\TestMakeCommand::class,
Commands\LaravelModulesV6Migrator::class,
],
Run Code Online (Sandbox Code Playgroud)
只需添加这一行:
use Nwidart\Modules\Commands\CommandMakeCommand;
Run Code Online (Sandbox Code Playgroud)
在文件的第config/modules.php一个中作为namespace
上面的命名空间只会解决 commandMakeCommand 问题,但如果你想设置所有命令命名空间,那么你需要在顶部添加命名空间。
namespace Nwidart\Modules\Commands;
Run Code Online (Sandbox Code Playgroud)