Hi!
I want to post an article via Json API. When I install and enable module, post an article, the response is "201 Created" OK.
After that I install and enable JSON API File, with Token and File Entity module, because I want to upload image to article.
If this modules enabled, and POST an article with JSON API, I get 500 Internal Server Error, but the article created!
Version:
Drupal 8.5.4
PHP 7.1.18
Apache 2.4.6
MariaDb 10.3.7
The log details is:
TypeError: Argument 1 passed to Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer::isInternalResourceType() must implement interface Drupal\Core\Entity\EntityInterface, null given, called in /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php on line 138 in Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer->isInternalResourceType() (line 253 of /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php) #0 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php(138): Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer->isInternalResourceType(NULL) #1 /var/www/html/lab01/vendor/symfony/serializer/Serializer.php(143): Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer->normalize(Object(Drupal\Core\Field\EntityReferenceFieldItemList), 'api_json', Array) #2 /var/www/html/lab01/modules/contrib/jsonapi/src/Serializer/Serializer.php(46): Symfony\Component\Serializer\Serializer->normalize(Object(Drupal\Core\Field\EntityReferenceFieldItemList), 'api_json', Array) #3 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/EntityNormalizer.php(214): Drupal\jsonapi\Serializer\Serializer->normalize(Object(Drupal\Core\Field\EntityReferenceFieldItemList), 'api_json', Array) #4 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/EntityNormalizer.php(99): Drupal\jsonapi\Normalizer\EntityNormalizer->serializeField(Object(Drupal\Core\Field\EntityReferenceFieldItemList), Array, 'api_json') #5 /var/www/html/lab01/modules/jsonapi_extras/src/Normalizer/EntityNormalizerTrait.php(72): Drupal\jsonapi\Normalizer\EntityNormalizer->normalize(Object(Drupal\node\Entity\Node), 'api_json', Array) #6 /var/www/html/lab01/vendor/symfony/serializer/Serializer.php(143): Drupal\jsonapi_extras\Normalizer\ContentEntityNormalizer->normalize(Object(Drupal\node\Entity\Node), 'api_json', Array) #7 /var/www/html/lab01/modules/contrib/jsonapi/src/Serializer/Serializer.php(46): Symfony\Component\Serializer\Serializer->normalize(Object(Drupal\node\Entity\Node), 'api_json', Array) #8 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php(218): Drupal\jsonapi\Serializer\Serializer->normalize(Object(Drupal\node\Entity\Node), 'api_json', Array) #9 [internal function]: Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer->Drupal\jsonapi\Normalizer\{closure}(Object(Drupal\node\Entity\Node)) #10 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php(219): array_map(Object(Closure), Array) #11 /var/www/html/lab01/modules/contrib/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php(172): Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer->buildNormalizerValue(Object(Drupal\node\Entity\Node), 'api_json', Array) #12 /var/www/html/lab01/vendor/symfony/serializer/Serializer.php(143): Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer->normalize(Object(Drupal\jsonapi\Resource\JsonApiDocumentTopLevel), 'api_json', Array) #13 /var/www/html/lab01/modules/contrib/jsonapi/src/Serializer/Serializer.php(46): Symfony\Component\Serializer\Serializer->normalize(Object(Drupal\jsonapi\Resource\JsonApiDocumentTopLevel), 'api_json', Array) #14 /var/www/html/lab01/vendor/symfony/serializer/Serializer.php(116): Drupal\jsonapi\Serializer\Serializer->normalize(Object(Drupal\jsonapi\Resource\JsonApiDocumentTopLevel), 'api_json', Array) #15 /var/www/html/lab01/modules/contrib/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php(140): Symfony\Component\Serializer\Serializer->serialize(Object(Drupal\jsonapi\Resource\JsonApiDocumentTopLevel), 'api_json', Array) #16 /var/www/html/lab01/core/lib/Drupal/Core/Render/Renderer.php(582): Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber->Drupal\jsonapi\EventSubscriber\{closure}() #17 /var/www/html/lab01/modules/contrib/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php(143): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #18 /var/www/html/lab01/modules/contrib/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php(93): Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber->renderResponseBody(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\jsonapi\ResourceResponse), Object(Drupal\jsonapi\Serializer\Serializer), 'api_json') #19 [internal function]: Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber->onResponse(Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent), 'kernel.response', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #20 /var/www/html/lab01/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent), 'kernel.response', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #21 /var/www/html/lab01/vendor/symfony/http-kernel/HttpKernel.php(191): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent)) #22 /var/www/html/lab01/vendor/symfony/http-kernel/HttpKernel.php(173): Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object(Drupal\jsonapi\ResourceResponse), Object(Symfony\Component\HttpFoundation\Request), 1) #23 /var/www/html/lab01/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #24 /var/www/html/lab01/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #25 /var/www/html/lab01/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /var/www/html/lab01/core/modules/page_cache/src/StackMiddleware/PageCache.php(99): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /var/www/html/lab01/core/modules/page_cache/src/StackMiddleware/PageCache.php(78): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /var/www/html/lab01/modules/contrib/jsonapi/src/StackMiddleware/FormatSetter.php(41): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /var/www/html/lab01/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\jsonapi\StackMiddleware\FormatSetter->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /var/www/html/lab01/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /var/www/html/lab01/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /var/www/html/lab01/core/lib/Drupal/Core/DrupalKernel.php(666): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /var/www/html/lab01/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #34 {main}.
Many Thanks!
Comments
Comment #2
spleshkaHi, can you try installing the latest dev release and confirm that issue is still there? Thanks!
Comment #3
gerzenstl commentedI'm getting the same error. In my case, I have been used this module for many months.
I'm not sure if the jsonapi_file module is causing this error.
I have installed:
* jsonapi: 8.x-1.20
* jsonapi_extras: 8.x-2.1
* jsonapi_file: 8.x-1.2+1-dev
PHP 7.1.18
Comment #4
gerzenstl commentedIt seems this error is caused by a regression in jsonapi 1.19.
This issue affects any site with token module installed and jsonapi 1.19+. The issue was reported on #2978262.
The patch on #19 fixed this error on my case.
Comment #5
ahmed.raza commentedI am having the same error and for me token module is not installed on my site.
Updated jsonapi from 8.x-2.0 to 8.x-2.1 and whole website started crashing and logs showing the same error. Please help
Comment #6
ahmed.raza commentedAlright so definitely there is something wrong with 8.x-2.1 I downgraded to 8.x-2.x-dev and problem solved.
Comment #7
ahmed.raza commentedTypeError: Argument 1 passed to Drupal\jsonapi\Normalizer\RelationshipNormalizer::__construct() must be an instance of Drupal\jsonapi\LinkManager\LinkManager, instance of Drupal\jsonapi\ResourceType\ResourceTypeRepository given, called in /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php on line 274 in Drupal\jsonapi\Normalizer\RelationshipNormalizer->__construct() (line 59 of /var/www/drupal-8/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php) #0 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(274): Drupal\jsonapi\Normalizer\RelationshipNormalizer->__construct(Object(Drupal\jsonapi\ResourceType\ResourceTypeRepository), Object(Drupal\jsonapi\LinkManager\LinkManager), Object(Drupal\Core\Entity\EntityFieldManager), Object(Drupal\Core\Entity\EntityRepository)) #1 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(495): Drupal\Component\DependencyInjection\Container->createService(Array, 'private__ThWCwm...') #2 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(508): Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) #3 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(230): Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) #4 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(171): Drupal\Component\DependencyInjection\Container->createService(Array, 'jsonapi.seriali...') #5 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(480): Drupal\Component\DependencyInjection\Container->get('jsonapi.seriali...', 1) #6 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(230): Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) #7 /var/www/drupal-8/core/lib/Drupal/Component/DependencyInjection/Container.php(171): Drupal\Component\DependencyInjection\Container->createService(Array, 'jsonapi.resourc...') #8 /var/www/drupal-8/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(105): Drupal\Component\DependencyInjection\Container->get('jsonapi.resourc...') #9 /var/www/drupal-8/vendor/symfony/http-kernel/HttpKernel.php(191): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent)) #10 /var/www/drupal-8/vendor/symfony/http-kernel/HttpKernel.php(173): Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object(Drupal\Core\Render\HtmlResponse), Object(Symfony\Component\HttpFoundation\Request), 1) #11 /var/www/drupal-8/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #12 /var/www/drupal-8/modules/simple_oauth/src/HttpMiddleware/BasicAuthSwap.php(67): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #13 /var/www/drupal-8/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Drupal\simple_oauth\HttpMiddleware\BasicAuthSwap->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #14 /var/www/drupal-8/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #15 /var/www/drupal-8/core/modules/page_cache/src/StackMiddleware/PageCache.php(99): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #16 /var/www/drupal-8/core/modules/page_cache/src/StackMiddleware/PageCache.php(78): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true) #17 /var/www/drupal-8/modules/jsonapi/src/StackMiddleware/FormatSetter.php(41): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #18 /var/www/drupal-8/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\jsonapi\StackMiddleware\FormatSetter->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #19 /var/www/drupal-8/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #20 /var/www/drupal-8/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #21 /var/www/drupal-8/core/lib/Drupal/Core/DrupalKernel.php(693): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #22 /var/www/drupal-8/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #23 {main}.Comment #8
spleshkaI believe you can use native file uploads without this module since 8.x-2.1 of JSON:API. See https://www.drupal.org/node/3024331