Magento 2: Error during compilation mostly occur when we run the compile command, setup:di:compile via SSH.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Magento queries.
In this context, we shall look into methods to fix this Magento error.
Recently, we had a customer who upgraded to the latest version of Magento 2 i.e. 2.2.3.
However, while he runs the compile command (setup:di:compile) via SSH he comes across the error:
Errors during compilation:
Magento\Backend\Model\View\Layout\GeneratorPool
Incompatible argument type: Required type: \Magento\Framework\View\Layout\Condition\ConditionFactory. Actual type: \Magento\Framework\App\Config\ScopeConfigInterface; File:
/home/scommerc/public_html/magento2/vendor/magento/module-backend/Model/View/Layout/GeneratorPool.php
Total Errors Count: 1
[Magento\Framework\Validator\Exception]
Error during compilation
While checking we could see that there was a file that we need to remove after the upgrade. This is necessary especially when we upgrade from the old version to the new version (i.e. 2.2.3) because this file doesn't exist in the latest version.
vendor/magento/module-backend/Model/View/Layout/GeneratorPool.php
Instead of copying the files directly on the server, the best way to upgrade to the latest version of Magento 2 is to run:
composer require <product> <version> --no-update
composer update
For the Magento community:
composer require magento/product-community-edition 2.2.3 --no-update
composer update
For Magento enterprise:
composer require magento/product-enterprise-edition 2.2.3 --no-update
composer update
On the other hand, we came across a support request stating that they were receiving the following error while compilation:
[InvalidArgumentException]
Plugin class Vendor\Module\Plugin\WysiwygConfig doesn't exist
In this case, we run the below command and set up the upgrade:
php bin/magento setup:upgrade
Then we alter the command to:
php bin/Magento setup:di:compile
Eventually, we cache clean and cache flush.
By doing this, we can know where the error is triggered.
Then, to find the custom/third-party module we need to check the app/code directory.
In the directory, we need to find the line of code: in your app/code directory and post here which file contains this code.
class Vendor\Module\Plugin\WysiwygConfig
Here, since we can confirm it is from the module app/code/Talv/WysiwygFix, we disable it.
To disable the module, we run the below command:
php bin/magento module:disable Talv_WysiwygFix
Another method to disable this module from app/etc/config.php is by changing this module value from 1 to 0.
Then we run the below commands:
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush
This article covers methods to fix Magento error which happens during compilation on upgrading to version 2.2.3.
If you upgrade Magento older version to Magento 2.2.3 and you fetching same error in compile then below step you should follow to resolve this error.
Magento older version have 2 directories and 2 files in this path:
vendor\magento\module-backend\Model\View\Layout
And Magento version 2.2.3 have 1 directory and 2 files:
So after merge files and folder, you should delete "filter" folder and "GeneratorPool.php" from Magento version 2.2.3 on this path:
vendor/magento/module-backend/Model/View/Layout/GeneratorPool.php
Then run the compile command