Search code examples
lumen

Making Resets Passwords functionality I got \Mail\\Factory] is not instantiable error


In my lumen 8.0 app I want to add Resets Passwords functionality reading Trying to reset Passwords in Lumen article but I got error :

{
    "message": "Target [Illuminate\\Contracts\\Mail\\Factory] is not instantiable while building [Illuminate\\Notifications\\Channels\\MailChannel].",
    "exception": "Illuminate\\Contracts\\Container\\BindingResolutionException",
    "file": "/mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php",
    "line": 1089,
    "trace": [
        {
            "file": "/mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php",
            "line": 882,
            "function": "notInstantiable",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php",
            "line": 754,
            "function": "build",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php",
            "line": 692,
            "function": "resolve",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },

In my composer.json :

{
    "name": "laravel/lumen",
    "description": "The Laravel Lumen Framework.",
    "keywords": ["framework", "laravel", "lumen"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^7.3|^8.0",
        "anik/form-request": "^4.2",
        "cviebrock/eloquent-sluggable": "^8.0",
        "dusterio/lumen-passport": "^0.3.4",
        "flipbox/lumen-generator": "^8.2",
        "guzzlehttp/guzzle": "^7.3",
        "illuminate/mail": "^8.48",
        "illuminate/notifications": "^8.49",
        "intervention/image": "^2.5",
        "laravel/lumen-framework": "^8.0",
        "league/flysystem": " ~1.0"
    },
    "require-dev": {
        "fakerphp/faker": "^1.9.1",
        "mockery/mockery": "^1.3.1",
        "phpunit/phpunit": "^9.3"
    },
    "autoload": {
        "files": [
            "app/library/helper.php"
        ],
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ]
    }
}

Do I need to install some packages and how to init it in my package ?


Solution

  • Reading branch https://github.com/laravel/lumen-framework/issues/1057 I found decision with adding lines :

    $app->alias('mail.manager', Illuminate\Mail\MailManager::class);
    $app->alias('mail.manager', Illuminate\Contracts\Mail\Factory::class);
    

    in file bootstrap/app.php. And it works!