迁移Google Ads API Laravel示例至Jetstream时,遇控制器不存在错误
解决Laravel Jetstream中Target class [GoogleAdsApiController]不存在的问题
问题原因
你的路由使用了Laravel旧版的字符串语法('GoogleAdsApiController@pauseCampaignAction'),但Laravel 8及以上版本默认不再在RouteServiceProvider中设置控制器命名空间前缀,导致框架无法定位到对应的控制器类。
修复方案
方案1:使用类引用的路由写法(推荐)
你已经在路由文件顶部导入了GoogleAdsApiController,直接替换为数组形式的路由写法即可:
// 替换原有的pause-campaign路由 Route::post( 'pause-campaign', [GoogleAdsApiController::class, 'pauseCampaignAction'] ); // 替换原有的show-report路由 Route::match( ['get', 'post'], 'show-report', [GoogleAdsApiController::class, 'showReportAction'] );
方案2:恢复控制器命名空间前缀(兼容旧写法)
如果更习惯旧版字符串写法,可以修改app/Providers/RouteServiceProvider.php,在路由组中添加命名空间前缀:
public function boot() { $this->configureRateLimiting(); $this->routes(function () { Route::middleware('web') ->namespace('App\Http\Controllers') // 新增此行 ->group(base_path('routes/web.php')); // 保留其他原有路由配置 }); }
额外验证步骤
- 确认控制器文件路径正确:
app/Http/Controllers/GoogleAdsApiController.php,文件名与类名大小写完全一致(Linux环境下区分大小写) - 执行
composer dump-autoload命令,更新类自动加载映射
内容的提问来源于stack exchange,提问作者user2286485
相关产品推荐
相关产品推荐

