目标 [Illuminate\Contracts\Routing\ResponseFactory] ​​不可实例化

sim*_*imo 4 lumen

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

return response()->json(['name' => 'Abigail', 'state' => 'CA']);
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了错误:

Target [Illuminate\Contracts\Routing\ResponseFactory] is not instantiable.
Run Code Online (Sandbox Code Playgroud)

任何的想法?

这是我的 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

Raf*_* G. 8

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

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

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

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

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


小智 4

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

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

$app->register(App\Providers\AppServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)

然后在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']
        );
    });
}
Run Code Online (Sandbox Code Playgroud)