7

The upgrade process in composer works fine. After upgrading in composer en trying to run bin/magento setup:upgrade I get the following error:

Type Error occurred when creating object: Magento\Framework\Communication\Config\Data, Argument 2 passed to Magento\Framework\Reflection\TypeProcessor::resolveFullyQualifiedClassName() must be of the type string, null given, called in /data/web/magento2/vendor/magento/framework/Reflection/TypeProcessor.php on line 550

Anybody came across the same error? Any possible fix available?

EDIT:

To know which extension/class is responsible for the error, do the follow:

Open: vendor/magento/framework/Reflection/MethodsMap.php find the method getMethodMapViaReflection() and add the following to the first line:

echo $interfaceName . PHP_EOL;

Run bin/magento setup:upgdrade again. The last class just before the error is the suspect.

Credits to @JorgB for his answer.

asked Apr 13, 2022 at 8:55

3 Answers 3

17

One of your custom modules is not Magento 2.4.4 compatible..

How to fix? add PHPDOC block for all consumer class in your custom module.

How to find all consumer class? you can set break point debugger in vendor/magento/framework/Reflection/MethodsMap.php or just wrap this method in try/catch block and print the class you need to fix.

Or if you dont care to fix the modules now You can change line 550 of vendor/magento/framework/Reflection/TypeProcessor.php to "return $type;" that way you can proceed with setup:upgrade.

answered Apr 13, 2022 at 9:06
2
  • Thanks, how do you know that? And how do I resolve which one it is? Commented Apr 13, 2022 at 9:07
  • 1
    Edited my question with more information Commented Apr 13, 2022 at 9:13
7

find your not compatible custom modules in Magento 2.4.4. add code in vendor/magento/framework/Reflection/MethodsMap.php line 143

 if($paramReflection->detectType() == NULL)
 {
 var_dump($paramReflection->getDeclaringClass());
 die();
 }

after you run setup:upgrade command, output showing like that

object(Laminas\Code\Reflection\ClassReflection)#7057 (2) {
 ["docBlock":protected]=>
 NULL
 ["name"]=>
 string(36) "Magefan\Blog\Api\ManagementInterface"
}

in this output Magefan_Blog module is not compatible in Magento 2.4.4

answered Sep 1, 2022 at 10:17
1
  • Thanks it helps Commented Dec 6, 2022 at 5:46
0

I recently upgraded my magento version from 2.3.5-p1 to version 2.4.5-p1 and I was facing the similar issue. I tried the solutions provided but it is not working anymore.

On the magento 2.4.5-p1 version, in order to find the class that is not compatible with the magento version, you have to do the following steps.

  1. Open the file vendor/magento/framework/Webapi/ServiceOutputProcessor.php

  2. In the process method, just after the line $dataType = $this->methodsMapProcessor->getMethodReturnType($serviceClassName, $serviceMethodName);

  3. Add the below line of code, and it will give you the Class name and method name. if($dataType === null || empty($dataType)){echo $serviceClassName.'<>'.$serviceMethodName . PHP_EOL;}

Putting it here in case if someone need it.

Thanks

answered May 17, 2023 at 9:40

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.