Hi,
Testing after updating to Laravel 7, running into a few issues, mainly this one has me stumped:
$ php artisan module:make TestModule;
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/module.json
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Routes/web.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Routes/api.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Routes/admin.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Providers/AppServiceProvider.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Providers/EventServiceProvider.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Providers/RouteServiceProvider.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Resources/views/index.blade.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Resources/views/admin/index.blade.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Resources/views/layouts/frontend.blade.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Resources/views/layouts/admin.blade.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Listeners/TestEventListener.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Controllers/Frontend/IndexController.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Controllers/Api/ApiController.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Http/Controllers/Admin/AdminController.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/Config/config.php
Created : /Users/nabeelshahzad/dev/nabeelio/phpvms/modules/TestModule/composer.json
[2020-05-22T18:39:50.366694+00:00] dev.ERROR: Module [TestModule] does not exist! {"exception":"[object] (Nwidart\\Modules\\Exceptions\\ModuleNotFoundException(code: 0): Module [TestModule] does not exist! at /Users/nabeelshahzad/dev/nabeelio/phpvms/vendor/nwidart/laravel-modules/src/FileRepository.php:396)"} []
Nwidart\Modules\Exceptions\ModuleNotFoundException
Module [TestModule] does not exist!
at vendor/nwidart/laravel-modules/src/FileRepository.php:396
392| if ($module !== null) {
393| return $module;
394| }
395|
> 396| throw new ModuleNotFoundException("Module [{$name}] does not exist!");
397| }
398|
399| /**
400| * Get all modules as laravel collection instance.
+31 vendor frames
32 artisan:35
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
It looks like all the files I'm expecting are generated:
modules/TestModule
├── Config
│ └── config.php
├── Console
├── Database
│ ├── factories
│ ├── migrations
│ └── seeds
├── Http
│ ├── Controllers
│ │ ├── Admin
│ │ │ └── AdminController.php
│ │ ├── Api
│ │ │ └── ApiController.php
│ │ └── Frontend
│ │ └── IndexController.php
│ ├── Middleware
│ ├── Requests
│ └── Routes
│ ├── admin.php
│ ├── api.php
│ └── web.php
├── Listeners
│ └── TestEventListener.php
├── Models
├── Providers
│ ├── AppServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Resources
│ ├── assets
│ ├── lang
│ └── views
│ ├── admin
│ │ └── index.blade.php
│ ├── index.blade.php
│ └── layouts
│ ├── admin.blade.php
│ └── frontend.blade.php
├── composer.json
├── module.json
└── tests
This is what my config looks like; I'm generating some extra files and scaffolding:
<?php
use Nwidart\Modules\Activators\FileActivator;
return [
'namespace' => 'Modules',
'stubs' => [
'enabled' => true,
'path' => resource_path().'/stubs/modules',
'files' => [
'routes' => 'Http/Routes/web.php',
'routes-api' => 'Http/Routes/api.php',
'routes-admin' => 'Http/Routes/admin.php',
'app-provider' => 'Providers/AppServiceProvider.php',
'event-service-provider' => 'Providers/EventServiceProvider.php',
'route-provider' => 'Providers/RouteServiceProvider.php',
'views/index' => 'Resources/views/index.blade.php',
'views/index-admin' => 'Resources/views/admin/index.blade.php',
'views/frontend' => 'Resources/views/layouts/frontend.blade.php',
'views/admin' => 'Resources/views/layouts/admin.blade.php',
'listener-test' => 'Listeners/TestEventListener.php',
'controller' => 'Http/Controllers/Frontend/IndexController.php',
'controller-api' => 'Http/Controllers/Api/ApiController.php',
'controller-admin' => 'Http/Controllers/Admin/AdminController.php',
'config' => 'Config/config.php',
'composer' => 'composer.json',
],
'replacements' => [
'start' => ['LOWER_NAME', 'ROUTES_LOCATION'],
'routes' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'routes-api' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'app-provider' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'event-service-provider' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'CLASS_NAMESPACE'],
'route-provider' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'CLASS_NAMESPACE'],
'listener-test' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'views/index' => ['LOWER_NAME'],
'views/index-admin' => ['LOWER_NAME', 'STUDLY_NAME'],
'views/frontend' => ['STUDLY_NAME'],
'views/admin' => ['STUDLY_NAME'],
'controller' => ['MODULE_NAMESPACE', 'STUDLY_NAME', 'CLASS_NAMESPACE', 'LOWER_NAME'],
'controller-admin' => ['MODULE_NAMESPACE', 'STUDLY_NAME', 'CLASS_NAMESPACE', 'LOWER_NAME'],
'controller-api' => ['MODULE_NAMESPACE', 'STUDLY_NAME', 'CLASS_NAMESPACE', 'LOWER_NAME'],
'config' => ['STUDLY_NAME'],
'composer' => [
'LOWER_NAME',
'STUDLY_NAME',
'VENDOR',
'AUTHOR_NAME',
'AUTHOR_EMAIL',
'MODULE_NAMESPACE',
],
],
'gitkeep' => false,
],
'paths' => [
'modules' => base_path('modules'),
'assets' => public_path('modules'),
'migration' => base_path('database/migrations'),
'generator' => [
'config' => ['path' => 'Config', 'generate' => true],
'command' => ['path' => 'Console', 'generate' => true],
'migration' => ['path' => 'Database/migrations', 'generate' => true],
'seeds' => ['path' => 'Database/seeds', 'generate' => true],
'factory' => ['path' => 'Database/factories', 'generate' => true],
'model' => ['path' => 'Models', 'generate' => true],
'controller' => ['path' => 'Http/Controllers', 'generate' => true],
'controller-admin' => ['path' => 'Http/Controllers/Admin', 'generate' => true],
'controller-api' => ['path' => 'Http/Controllers/Api', 'generate' => true],
'filter' => ['path' => 'Http/Middleware', 'generate' => true],
'request' => ['path' => 'Http/Requests', 'generate' => true],
'routes' => ['path' => 'Http/Routes', 'generate' => true],
'provider' => ['path' => 'Providers', 'generate' => true],
'assets' => ['path' => 'Resources/assets', 'generate' => true],
'lang' => ['path' => 'Resources/lang', 'generate' => true],
'views' => ['path' => 'Resources/views', 'generate' => true],
'test' => ['path' => 'tests', 'generate' => true],
'repository' => ['path' => 'Repositories', 'generate' => false],
'event' => ['path' => 'Events', 'generate' => false],
'listener' => ['path' => 'Listeners', 'generate' => true],
'policies' => ['path' => 'Policies', 'generate' => false],
'rules' => ['path' => 'Rules', 'generate' => false],
'jobs' => ['path' => 'Jobs', 'generate' => false],
'emails' => ['path' => 'Resources/Emails', 'generate' => false],
'notifications' => ['path' => 'Notifications', 'generate' => false],
'resource' => ['path' => 'Models/Transformers', 'generate' => false],
],
],
/*
|--------------------------------------------------------------------------
| Scan Path
|--------------------------------------------------------------------------
|
| Here you define which folder will be scanned. By default will scan vendor
| directory. This is useful if you host the package in packagist website.
|
*/
'scan' => [
'enabled' => false,
'paths' => [
base_path('vendor/*/*'),
base_path('modules/*'),
],
],
/*
|--------------------------------------------------------------------------
| Composer File Template
|--------------------------------------------------------------------------
|
| Here is the config for composer.json file, generated by this package
|
*/
'composer' => [
'vendor' => '',
'author' => [
'name' => '',
'email' => '',
],
],
/*
|--------------------------------------------------------------------------
| Caching
|--------------------------------------------------------------------------
|
| Here is the config for setting up caching feature.
|
*/
'cache' => [
'enabled' => true,
'key' => 'phpvms-modules',
'lifetime' => 10,
],
/*
|--------------------------------------------------------------------------
| Choose what laravel-modules will register as custom namespaces.
| Setting one to false will require you to register that part
| in your own Service Provider class.
|--------------------------------------------------------------------------
*/
'register' => [
'translations' => true,
],
'activator' => 'file',
'activators' => [
'file' => [
'class' => FileActivator::class,
'statuses-file' => config_path('modules_statuses.json'),
'cache-key' => 'activator.installed',
'cache-lifetime' => 604800,
],
],
];
I'm trying to debug with some people who are running into issues with generating modules; it looks like the service provider (TestModuleServiceProvider
in this case wasn't generated). And it looks also like the caches (config, routes) didn't get cleared (I can't remember if this was supposed to be the case). It could also be that I'm missing some configuration or something in the upgrade to Laravel 7, but I haven't seen anything specific). Thanks!