'Deploy updated laravel app - ERROR: Failed to install system packages
I simply tried to follow the Heroku guide to create a simple laravel app (even without db connection) and deploy on a Heroku app. However, it appears that when using Composer 2 there are problems (see log here). Rolling back to Composer 1 is all right. In the Heroku documentation it is indicated that Composer 2 is supported but obviously I am doing something wrong since it gives me an error.
when I push modifications to Heroku i get this error:
! The following is the full output from the installation attempt:
!
! > Loading repositories with available runtimes and extensions
! > Updating dependencies
! > Your requirements could not be resolved to an installable set of packages.
! >
! > Problem 1
! > - The requested package composer-plugin-api could not be found in any version, there may be a typo in the package name.
! >
!
! For reference, the following runtimes are currently available:
!
! PHP: 8.0.6, 8.0.3, 8.0.2, 8.0.1, 8.0.0, 7.4.19, 7.4.16,
! 7.4.15, 7.4.14, 7.4.13, 7.4.12, 7.4.11, 7.4.10, 7.4.9,
! 7.4.8, 7.4.7, 7.4.6, 7.4.5, 7.4.4, 7.4.3, 7.4.2, 7.3.28,
! 7.3.27, 7.3.26, 7.3.25, 7.3.24, 7.3.23, 7.3.22, 7.3.21,
! 7.3.20, 7.3.19, 7.3.18, 7.3.17, 7.3.16, 7.3.15, 7.3.14,
! 7.3.13, 7.2.34, 7.2.33, 7.2.32, 7.2.31, 7.2.30, 7.2.29,
! 7.2.28, 7.2.27, 7.2.26, 7.1.33
!
! Please verify that all requirements for runtime versions in
! 'composer.lock' are compatible with the list above, and ensure
! all required extensions are available for the desired runtimes.
!
!
! For a list of supported runtimes & extensions on Heroku, please
! refer to: https://devcenter.heroku.com/articles/php-support
! Push rejected, failed to compile PHP app.
! Push failed
I tried with
composer require composer-plugin-api
But still get error. I use PHP 7.4.19 and my app is done with Laravel 7.
Here is the content of my composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2",
"composer-plugin-api": "^2.1",
"barryvdh/laravel-ide-helper": "^2.6",
"doctrine/dbal": "^2.10",
"fideloper/proxy": "^4.2",
"guzzlehttp/guzzle": "^6.5",
"jeroenzwart/laravel-csv-seeder": "^1.2",
"kris/laravel-form-builder": "^1.22",
"laravel-frontend-presets/bulma": "^3.0",
"laravel/framework": "^6.12",
"laravel/scout": "^7.2",
"laravel/tinker": "^2.1",
"league/csv": "^9.5",
"michelf/php-markdown": "^1.9",
"nesbot/carbon": "^2.29",
"proengsoft/laravel-jsvalidation": "^2.5",
"psr/log": "^1.1",
"spatie/laravel-collection-macros": "^6.0",
"spatie/laravel-permission": "^3.6",
"spatie/laravel-searchable": "^1.5",
"yajra/laravel-datatables": "^1.5"
},
"require-dev": {
"facade/ignition": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^8.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
Thanks
Solution 1:[1]
Just an update: I also used this guide provided by Heroku devcenter to create a simple laravel app and deploy it on heroku and i got the same result.
I suppose it could be a problem with Composer 2, but reading Heroku docs I understood Heroku support Composer 2
Solution 2:[2]
At the moment the only way I have found to solve seems to be to bring Composer back to version 1. In doing so, heroku accepted the deployment.
Solution 3:[3]
This const refers that's once u initialled any value to that variable then u can't change the value of that constants variables in future. For Eg. A man have only 2 Hands and u can not changed man hands number.
so that's why we are using const in flutter or any programming language.
Solution 4:[4]
consider we have these three lines of code:
1.const EdgeInsets.all(25.0)
2.const EdgeInsets.all(25.0)
3.const EdgeInsets.all(25.0)
At first line EdgeInsets class creates a new object and assigns its values for left, top, right, bottom and render the given widget and then it creates a constant object with same value for rendering if it is found in another place.
Hey there is already an object with this value, so just render it.
Hey there is already an object with this value, so just render it.
Now, let us consider these scenario:
1.EdgeInsets.all(25.0)
2.EdgeInsets.all(25.0)
3.EdgeInsets.all(25.0)
At first line, EdgeInsets class creates a new object and assigns its values for left, top, right, bottom and render the given widget.
At the second line, EdgeInsets class creates a new object and assigns its values for left, top, right, bottom and render the given widget.
At third line, EdgeInsets class creates a new object and assigns its values for left, top, right, bottom and render the given widget.
So, by using const we can reduce the time for recreating the same object every time and using it, instead, we create an object once and then reuse it at every time we need.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Simon Bissi |
| Solution 2 | Simon Bissi |
| Solution 3 | Amit Singh |
| Solution 4 | Tasnuva Tavasum oshin |
