3

I've been tasked with upgrading my project from 2.3.7-p1 to 2.4.3-p1 and I am running into this problem when I run bin/magento setup:upgrade -vvv.

I've tried checking all of the custom modules for the area code being set in the constructor and there is nothing there.

I've tried temporarily setting the area code to GLOBAL which works the first time around but then when I run another custom command to generate categories, I get the error message Area code is already set.

I don't know where to look next.. I've tried debugging through var_dumps all along the stack trace, but it just shows my theme is empty, but I don't know where to look to fix that.

Below is my stack trace, if anyone has any thoughts, please let me know so I can try this asap!

  at /usr/local/projects/myproject/vendor/magento/framework/App/State.php:153
 Magento\Framework\App\State->getAreaCode() at /usr/local/projects/myproject/vendor/magento/module-theme/Model/Theme.php:272
 Magento\Theme\Model\Theme->getArea() at /usr/local/projects/myproject/vendor/magento/framework/View/File/Collector/Base.php:68
 Magento\Framework\View\File\Collector\Base->getFiles() at /usr/local/projects/myproject/vendor/magento/framework/View/File/Collector/Decorator/ModuleOutput.php:59
 Magento\Framework\View\File\Collector\Decorator\ModuleOutput->getFiles() at /usr/local/projects/myproject/vendor/magento/framework/View/File/Collector/Decorator/ModuleDependency.php:63
 Magento\Framework\View\File\Collector\Decorator\ModuleDependency->getFiles() at /usr/local/projects/myproject/vendor/magento/framework/View/Layout/File/Collector/Aggregated.php:88
 Magento\Framework\View\Layout\File\Collector\Aggregated->getFiles() at /usr/local/projects/myproject/vendor/magento/framework/View/Element/UiComponent/Config/FileCollector/AggregatedFileCollector.php:76
 Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollector->collectFiles() at /usr/local/projects/myproject/vendor/magento/module-ui/Config/Reader/FileResolver.php:43
 Magento\Ui\Config\Reader\FileResolver->get() at /usr/local/projects/myproject/vendor/magento/module-ui/Config/Reader/Definition.php:28
 Magento\Ui\Config\Reader\Definition->read() at /usr/local/projects/myproject/vendor/magento/module-ui/Config/Reader/Definition/Data.php:89
 Magento\Ui\Config\Reader\Definition\Data->initData() at /usr/local/projects/myproject/vendor/magento/module-ui/Config/Reader/Definition/Data.php:75
 Magento\Ui\Config\Reader\Definition\Data->__construct() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:121
 Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:66
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:206
 Magento\Framework\ObjectManager\Factory\AbstractFactory->parseArray() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:182
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:170
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:70
 Magento\Framework\ObjectManager\ObjectManager->get() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:206
 Magento\Framework\ObjectManager\Factory\AbstractFactory->parseArray() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:182
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:276
 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:239
 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59
 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() at /usr/local/projects/myproject/vendor/magento/framework/ObjectManager/ObjectManager.php:56
 Magento\Framework\ObjectManager\ObjectManager->create() at /usr/local/projects/myproject/vendor/magento/framework/Console/Cli.php:153
 Magento\Framework\Console\Cli->getApplicationCommands() at /usr/local/projects/myproject/vendor/magento/framework/Console/Cli.php:134
 Magento\Framework\Console\Cli->getDefaultCommands() at /usr/local/projects/myproject/vendor/symfony/console/Application.php:1274
 Symfony\Component\Console\Application->init() at /usr/local/projects/myproject/vendor/symfony/console/Application.php:629
 Symfony\Component\Console\Application->find() at /usr/local/projects/myproject/vendor/symfony/console/Application.php:237
 Symfony\Component\Console\Application->doRun() at /usr/local/projects/myproject/vendor/magento/framework/Console/Cli.php:115
 Magento\Framework\Console\Cli->doRun() at /usr/local/projects/myproject/vendor/symfony/console/Application.php:149
 Symfony\Component\Console\Application->run() at /usr/local/projects/myproject/bin/magento:23

1 Answers1

4

I lived through the same exact situation and I was able to resolve it.

The problem comes from the constructor in this file: vendor/magento/module-payment/Helper/Data.php

public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        LayoutFactory $layoutFactory,
        \Magento\Payment\Model\Method\Factory $paymentMethodFactory,
        \Magento\Store\Model\App\Emulation $appEmulation,
        \Magento\Payment\Model\Config $paymentConfig,
        \Magento\Framework\App\Config\Initial $initialConfig
    ) {
        parent::__construct($context);
        $this->_layout = $layoutFactory->create();
        $this->_methodFactory = $paymentMethodFactory;
        $this->_appEmulation = $appEmulation;
        $this->_paymentConfig = $paymentConfig;
        $this->_initialConfig = $initialConfig;
    }

The bug is caused by the $layoutFactory running the "create" method within the constructor.

At line 184, you will get the only usage of the "_layout" attribute.

public function getInfoBlock(InfoInterface $info, LayoutInterface $layout = null)
    {
        $layout = $layout ?: $this->_layout;
        $blockType = $info->getMethodInstance()->getInfoBlockType();
        $block = $layout->createBlock($blockType);
        $block->setInfo($info);
        return $block;
    }

What you need to do is move the object creation out of the constructor and within the getInfoBlock method. So it looks like this after:

public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        LayoutFactory $layoutFactory,
        \Magento\Payment\Model\Method\Factory $paymentMethodFactory,
        \Magento\Store\Model\App\Emulation $appEmulation,
        \Magento\Payment\Model\Config $paymentConfig,
        \Magento\Framework\App\Config\Initial $initialConfig
    ) {
        parent::__construct($context);
        $this->_layout = $layoutFactory;
        $this->_methodFactory = $paymentMethodFactory;
        $this->_appEmulation = $appEmulation;
        $this->_paymentConfig = $paymentConfig;
        $this->_initialConfig = $initialConfig;
    }
public function getInfoBlock(InfoInterface $info, LayoutInterface $layout = null)
    {
        $layout = $layout ?: $this->_layout->create();
        $blockType = $info->getMethodInstance()->getInfoBlockType();
        $block = $layout->createBlock($blockType);
        $block->setInfo($info);
        return $block;
    }

I found a similar fix for the same issue within the Magento 2 codebase, here is the commit: https://github.com/magento/magento2/commit/d0f220111548123a7a77102cc516b1043d54d905

That fix is available in Magento 2.4.4, so if you are able to update to that version, it should fix your problem. If you are still stuck on 2.4.3 like me, you can just apply the fix manually like I described.

Have a nice day!

B. Auclair
  • 41
  • 2
  • Ah... thanks, you save my life. I consider to upgraded to 2.4.4 but it's too risky. that patch solves the issue – Dedi Ananto Sep 27 '22 at 08:24