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.
Magento 2: Error during compilation
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:
Incompatible argument type: Required type: \Magento\Framework\View\Layout\Condition\ConditionFactory. Actual type: \Magento\Framework\App\Config\ScopeConfigInterface; File:
Total Errors Count: 1
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.
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
For the Magento community:
composer require magento/product-community-edition 2.2.3 --no-update
For Magento enterprise:
composer require magento/product-enterprise-edition 2.2.3 --no-update
Alternate solution to this Magento error
On the other hand, we came across a support request stating that they were receiving the following error while compilation:
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.
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