今天使用Lumen的时候,用到了Response类,很奇怪提示:Target [Illuminate\Contracts\Routing\ResponseFactory] is not instantiable. 大概就是说实例不了Response 类,那怎么解决呢?咱们以一个全新的Lumen项目来讲
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It is a breeze. Simply tell Lumen the URIs it should respond to | and give it the Closure to call when that URI is requested. | */ use Illuminate\Support\Facades\Response; $router->get('/', function () use ($router) { return Response::json('123456',200); });
而后访问这个路由报错以下(也就是咱们要解决的错误):php
2.1 打开项目根目录下的 bootstrap/app.phpweb
//找到这两行把注释去掉 $app->withFacades(); $app->register(App\Providers\AppServiceProvider::class);
2.2 找到 项目根目录下的 app/Providers/AppServiceProvider.phpjson
<?php namespace App\Providers; use Illuminate\Routing\ResponseFactory; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { } }
在 register 注册 ResponseFactory 修改以下:bootstrap
<?php namespace App\Providers; use Illuminate\Routing\ResponseFactory; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { $this->app->singleton('Illuminate\Contracts\Routing\ResponseFactory', function ($app) { return new ResponseFactory( $app['Illuminate\Contracts\View\Factory'], $app['Illuminate\Routing\Redirector']); }); } }
这时候还不行, 咱们还须要安装一个 库,切换到项目根目录 执行composer命令:app
composer require "illuminate/routing"
库安装完后,咱们访问试试:composer
很简单吧,这样就能够啦~~ide
特别提示:ui
本人正在培养本身的写做水平,会把平时遇到的问题和有趣的东西记录下来,若是对你有帮助请动动小手点个赞支持支持,大神莫喷,谢谢!!this