【问题标题】:Target [Illuminate\Contracts\Routing\ResponseFactory] is not instantiable目标 [Illuminate\Contracts\Routing\ResponseFactory] ​​不可实例化
【发布时间】:2016-12-21 15:47:34
【问题描述】:

我正在尝试返回这样的响应:

return response()->json(['name' => 'Abigail', 'state' => 'CA']);

但是,我得到了错误:

Target [Illuminate\Contracts\Routing\ResponseFactory] is not instantiable.

有什么想法吗?

这是我的 composer.json:

{
  "name": "laravel/lumen",
  "description": "The Laravel Lumen Framework.",
  "keywords": [
    "framework",
    "laravel",
    "lumen"
  ],
  "license": "MIT",
  "type": "project",
  "require": {
    "php": ">=5.5.9",
    "laravel/lumen-framework": "5.2.*",
    "vlucas/phpdotenv": "~2.2",
    "generationtux/jwt-artisan": "^0.1.7",
    "barryvdh/laravel-cors": "^0.8.0",
    "neomerx/cors-illuminate": "^1.1",
    "fenos/notifynder": "3.1.*",
    "franzose/closure-table": "^4.1",
    "mlntn/lumen-artisan-serve": "~1",
    "guzzlehttp/guzzle": "~6.0",
    "league/flysystem": " ~1.0",
    "bugsnag/bugsnag-laravel": "^2.0"
  },
  "require-dev": {
    "fzaninotto/faker": "~1.4",
    "phpunit/phpunit": "~4.0"
  },
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "GuzzleHttp\\": "/vendor/guzzlehttp/"
    },
    "classmap": [
      "database/"
    ]
  },
  "autoload-dev": {
    "classmap": [
      "tests/",
      "database/"
    ]
  },
  "config": {
    "preferred-install": "dist"
  }
}

【问题讨论】:

  • 你能显示你的composer.json吗?
  • 请参阅上面问题中添加的composer.json
  • 作为测试,如果你去掉bugsnag/bugsnag-laravel,是否还会报错?

标签: lumen


【解决方案1】:

我在 2020 年仍然遇到错误。这是 @sunben 解决方案的更新版本:

bootstrap/app.php 中,取消注释以下行

$app->register(App\Providers\AppServiceProvider::class);

然后在app\Providers\AppServiceProvider.php中,更新注册方法添加:

$this->app->singleton(\Illuminate\Contracts\Routing\ResponseFactory::class, function() {
    return new \Laravel\Lumen\Http\ResponseFactory();
});

【讨论】:

    【解决方案2】:

    可能会迟到,但找到了解决方案。

    bootstrap/app.php 中,取消注释以下行

    $app->register(App\Providers\AppServiceProvider::class);
    

    然后在app\Providers\AppServiceProvider.php中,更新注册方法添加:

    public function register()
    {
        $this->app->singleton('Illuminate\Contracts\Routing\ResponseFactory', function ($app) {
            return new \Illuminate\Routing\ResponseFactory(
                $app['Illuminate\Contracts\View\Factory'],
                $app['Illuminate\Routing\Redirector']
            );
        });
    }
    

    【讨论】:

      【解决方案3】:

      试试这样 public function register() { $this->app->singleton(\Illuminate\Contracts\Routing\ResponseFactory::class, function() { return new \Laravel\Lumen\Http\ResponseFactory(); }); $this->app->bind(\Illuminate\Contracts\Routing\UrlGenerator::class, function ($app) { return new \Laravel\Lumen\Routing\UrlGenerator($app); }); }

      【讨论】:

        【解决方案4】:

        那些仍然遇到路由相关错误的人,只需将以下行放入您的composer.json 文件并运行命令composer update

        "illuminate/routing": "^5.6"
        
        composer update
        

        我们开始了,祝一切顺利

        【讨论】:

          【解决方案5】:

          response 帮助器可用于方便地生成其他类型的响应实例。当 response 不带参数调用助手时,将返回 Laravel\Lumen\Http\ResponseFactory 类的实现。

          use Laravel\Lumen\Http\ResponseFactory;

          【讨论】:

            【解决方案6】:

            打电话

            use Tests\TestCase;

            而不是

            use PHPUnit\Framework\TestCase;

            你的函数依赖于另一个函数,所以你应该像 feature 测试而不是 unit 测试那样扩展。

            【讨论】:

              猜你喜欢
              • 2017-05-09
              • 1970-01-01
              • 1970-01-01
              • 2020-06-08
              • 1970-01-01
              • 1970-01-01
              • 2016-06-22
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多