从5.1升级到5.3,遵循所有说明...... https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0
现在我要
了BadMethodCallException in Macroable.php line 74:
Method prefix does not exist.
in Macroable.php line 74
at Router->__call('prefix', array('api')) in Facade.php line 237
at Facade::__callStatic('prefix', array('api')) in RouteServiceProvider.php line 58
at RouteServiceProvider->mapApiRoutes() in RouteServiceProvider.php line 32
at RouteServiceProvider->map()
at call_user_func_array(array(object(RouteServiceProvider), 'map'), array()) in Container.php line 508
at Container->call(array(object(RouteServiceProvider), 'map')) in RouteServiceProvider.php line 69
at RouteServiceProvider->loadRoutes() in RouteServiceProvider.php line 30
at RouteServiceProvider->boot() in RouteServiceProvider.php line 23
at RouteServiceProvider->boot()
at call_user_func_array(array(object(RouteServiceProvider), 'boot'), array()) in Container.php line 508
at Container->call(array(object(RouteServiceProvider), 'boot')) in Application.php line 769
at Application->bootProvider(object(RouteServiceProvider)) in Application.php line 752
at Application->Illuminate\Foundation\{closure}(object(RouteServiceProvider), '16')
at array_walk(array(object(EventServiceProvider), object(RoutingServiceProvider), object(AuthServiceProvider), object(CookieServiceProvider), object(DatabaseServiceProvider), object(EncryptionServiceProvider), object(FilesystemServiceProvider), object(FoundationServiceProvider), object(PaginationServiceProvider), object(SessionServiceProvider), object(ViewServiceProvider), object(NotificationServiceProvider), object(AppServiceProvider), object(AuthServiceProvider), object(ConfigServiceProvider), object(EventServiceProvider), object(RouteServiceProvider), object(DatabaseServiceProvider), object(BraintreeServiceProvider), object(BroadcastServiceProvider), object(FlashServiceProvider), object(ExcelServiceProvider), object(CashierServiceProvider), object(EntrustServiceProvider), object(AnalyticsServiceProvider), object(JWTAuthServiceProvider), object(ApidocsServiceProvider), object(ServiceProvider), object(GeoIPServiceProvider), object(PdfServiceProvider), object(LaravelPhoneServiceProvider)), object(Closure)) in Application.php line 753
at Application->boot() in BootProviders.php line 17
at BootProviders->bootstrap(object(Application)) in Application.php line 203
at Application->bootstrapWith(array('Illuminate\Foundation\Bootstrap\DetectEnvironment', 'Illuminate\Foundation\Bootstrap\LoadConfiguration', 'Illuminate\Foundation\Bootstrap\ConfigureLogging', 'Illuminate\Foundation\Bootstrap\HandleExceptions', 'Illuminate\Foundation\Bootstrap\RegisterFacades', 'Illuminate\Foundation\Bootstrap\RegisterProviders', 'Illuminate\Foundation\Bootstrap\BootProviders')) in Kernel.php line 254
at Kernel->bootstrap() in Kernel.php line 145
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 52
RouteServiceProvider的代码是laravel的精确副本。 不知道为什么不加载!该方法无法识别,但我可以在Router类中看到它。
{ " name":" laravel / laravel", "描述":" Laravel框架。", "关键字":["框架"," laravel"], "许可证":" MIT", "输入":"项目", "要求":{ " laravel / framework":" 5.3。", " laravelcollective / html":" ~5.0", " laracasts / flash":" ~1.3", " maatwebsite / excel":" ~2.1", " guzzlehttp / guzzle":" ~6.2", " doctrine / dbal":" ~2.5", " laravel / cashier":" ~7.0", " league / flysystem-aws-s3-v3":" ~1.0", " zizaco /委托":" 1.7.0", " barryvdh / laravel-ide-helper":" ^ 2.2", " blueimp / jquery-file-upload":" ^ 9.14", " ipunkt / laravel-analytics":" ^ 1.3", " braintree / braintree_php":" ^ 3.21", " tymon / jwt-auth":" 0.5。", " f2m2 / apidocs":" ~2.0", " barryvdh / laravel-cors":" 0.8。*", " pulkitjalan / geoip":" ~2.4", " aws / aws-sdk-php-laravel":" ^ 3.1", " vsmoraes / laravel-pdf":" ^ 1.0", " propaganistas / laravel-phone":" ^ 2.8", " activecampaign / api-php":" ~2.0" }, " require-dev":{ " phpunit / phpunit":" ~4.0", " phpspec / phpspec":" ~2.1", " ozankurt / repoist":" ^ 1.0", " symfony / dom-crawler":" ~3.1", " symfony / css-selector":" ~3.1" }, " autoload":{ " classmap":[ "数据库" ] " psr-4":{ " APP \":" app /" } }, " autoload-dev":{ " classmap":[ "测试/ TestCase.php" ] }, "脚本":{ " post-root-package-install":[ " php -r \" file_exists(' .env')||复制(' .env.example',' .env'); \"" ] " post-create-project-cmd":[ " php artisan key:generate" ] " post-install-cmd":[ "照亮\基金会\ ComposerScripts ::安装后&#34 ;, " php artisan optimize" ] " post-update-cmd":[ "照亮\基金会\ ComposerScripts :: postUpdate&#34 ;, " php artisan optimize" ] }, " config":{ " preferred-install":" dist" } }
RouteServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
//
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
}
另一项测试 我交换了前缀和中间件调用并得到了这个错误......
SWAPPED ORDER
protected function mapApiRoutes()
{
Route::middleware('api')->prefix('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
ERROR
FatalThrowableError in Router.php line 859:
Type error: Too few arguments to function Illuminate\Routing\Router::middleware(), 1 passed in /var/www/vhosts/camp-native/API-v.2-master/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 237 and exactly 2 expected
in Router.php line 859
at Router->middleware('api') in Facade.php line 237
at Facade::__callStatic('middleware', array('api')) in RouteServiceProvider.php line 58
at RouteServiceProvider->mapApiRoutes() in RouteServiceProvider.php line 32
at RouteServiceProvider->map()
at call_user_func_array(array(object(RouteServiceProvider), 'map'), array()) in Container.php line 508
at Container->call(array(object(RouteServiceProvider), 'map')) in RouteServiceProvider.php line 69
at RouteServiceProvider->loadRoutes() in RouteServiceProvider.php line 30
at RouteServiceProvider->boot() in RouteServiceProvider.php line 23
at RouteServiceProvider->boot()
at call_user_func_array(array(object(RouteServiceProvider), 'boot'), array()) in Container.php line 508
at Container->call(array(object(RouteServiceProvider), 'boot')) in Application.php line 769
at Application->bootProvider(object(RouteServiceProvider)) in Application.php line 752
at Application->Illuminate\Foundation\{closure}(object(RouteServiceProvider), '16')
at array_walk(array(object(EventServiceProvider), object(RoutingServiceProvider), object(AuthServiceProvider), object(CookieServiceProvider), object(DatabaseServiceProvider), object(EncryptionServiceProvider), object(FilesystemServiceProvider), object(FoundationServiceProvider), object(PaginationServiceProvider), object(SessionServiceProvider), object(ViewServiceProvider), object(NotificationServiceProvider), object(AppServiceProvider), object(AuthServiceProvider), object(ConfigServiceProvider), object(EventServiceProvider), object(RouteServiceProvider), object(DatabaseServiceProvider), object(BraintreeServiceProvider), object(BroadcastServiceProvider), object(FlashServiceProvider), object(ExcelServiceProvider), object(CashierServiceProvider), object(EntrustServiceProvider), object(AnalyticsServiceProvider), object(JWTAuthServiceProvider), object(ApidocsServiceProvider), object(ServiceProvider), object(GeoIPServiceProvider), object(PdfServiceProvider), object(LaravelPhoneServiceProvider)), object(Closure)) in Application.php line 753
at Application->boot() in BootProviders.php line 17
at BootProviders->bootstrap(object(Application)) in Application.php line 203
at Application->bootstrapWith(array('Illuminate\Foundation\Bootstrap\DetectEnvironment', 'Illuminate\Foundation\Bootstrap\LoadConfiguration', 'Illuminate\Foundation\Bootstrap\ConfigureLogging', 'Illuminate\Foundation\Bootstrap\HandleExceptions', 'Illuminate\Foundation\Bootstrap\RegisterFacades', 'Illuminate\Foundation\Bootstrap\RegisterProviders', 'Illuminate\Foundation\Bootstrap\BootProviders')) in Kernel.php line 254
at Kernel->bootstrap() in Kernel.php line 145
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 52
答案 0 :(得分:2)
该链接是从5.2升级到5.3,因此您可能还需要检查5.1到5.2。
看起来可能是缺少的API路由和中间件。在该更新链接上,您已查找API和参考部分:
'api' => [
'throttle:60,1',
'bindings',
],
并且在app/Providors/RouteServiceProvider
内寻找某些东西,如:
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
希望这有帮助,可能是一个线索?
答案 1 :(得分:0)
最近,我在尝试将应用程序从5.2
升级到5.3
时遇到同样的问题。
经过反复梳理和解决错误后,我意识到RouteServiceProvider.php
文件中存在错误。这是我解决问题的方法。
我替换了:
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
与
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api'
], function($router){
require base_path('routes/api.php');
});
这对我来说很神奇。现在,我没有任何与中间件相关的错误。
顺便说一句::如果您的错误与mapWebRoutes
有关,则需要使用web
函数执行相同的操作。
希望这会有所帮助。