Score:0

วิธีจัดการกับ "ตรวจพบการสร้างเราเตอร์แบบเรียกซ้ำ" ข้อผิดพลาดข้อยกเว้น

ธง ke

ฉันมักจะเห็นการติดตั้งโมดูลและการถอนการติดตั้งโมดูลล้มเหลวโดยมีข้อผิดพลาด

Uncaught ข้อยกเว้น PHP RuntimeException: "ตรวจพบการสร้างเราเตอร์แบบเรียกซ้ำ" ที่ /path/to/drupal/web/core/lib/Drupal/Core/Routing/RouteBuilder.php บรรทัด 121

ดูเหมือนว่าปัญหาพื้นฐานคือมีบางอย่างผิดพลาด และวิธีการจัดการข้อผิดพลาดจะพยายามรับข้อมูลเราเตอร์ที่มีการเปลี่ยนแปลงอยู่แล้ว

ความจริงที่ว่ามันสร้างข้อยกเว้น WSOD ที่ร้ายแรงนี้เป็นข้อบกพร่องหลักหรือไม่ หรือนี่เป็นหนึ่งในสิ่งที่พวกเขามักจะส่งต่อความรับผิดชอบให้กับสิ่งที่ทำให้เกิดข้อผิดพลาดดั้งเดิม? มีวิธีที่ดีในการวินิจฉัยปัญหาเหล่านี้หรือไม่?

ปล่อยให้โมดูลติดตั้งไว้ครึ่งหนึ่ง เช่นเดียวกับประเภทเอนทิตีที่ลงทะเบียน แต่ไม่มีสคีมา มันไม่ดี

ตัวอย่างข้อผิดพลาด:

เว็บไซต์พบข้อผิดพลาดที่ไม่คาดคิด กรุณาลองใหม่อีกครั้งในภายหลัง.

RuntimeException: ตรวจพบการสร้างเราเตอร์ซ้ำ ใน Drupal\Core\Routing\RouteBuilder->rebuild() (บรรทัดที่ 121 ของ core/lib/Drupal/Core/Routing/RouteBuilder.php)
Drupal\Core\ProxyClass\Routing\RouteBuilder->rebuild() (บรรทัด: 67)
Drupal\Core\Routing\RouteProviderLazyBuilder->getRouteProvider() (บรรทัด: 104)
Drupal\Core\Routing\RouteProviderLazyBuilder->getRoutesByPattern() (บรรทัด: 115)
Drupal\devel\EntityTypeInfo->getPathParts() (บรรทัด: 100)
Drupal\devel\EntityTypeInfo->setEntityTypeLinkTemplate() (บรรทัด: 75)
Drupal\devel\EntityTypeInfo->entityTypeAlter() (บรรทัด: 94)
devel_entity_type_alter() (บรรทัด: 539)
Drupal\Core\Extension\ModuleHandler->alter() (บรรทัด: 334)
Drupal\Core\Plugin\DefaultPluginManager->alterDefinitions() (บรรทัด: 127)
Drupal\Core\Entity\EntityTypeManager->findDefinitions() (บรรทัด: 175)
Drupal\Core\Plugin\DefaultPluginManager->getDefinitions() (บรรทัด: 22)
Drupal\Core\Plugin\DefaultPluginManager->getDefinition() (บรรทัด: 136)
Drupal\Core\Entity\EntityTypeManager->getDefinition() (บรรทัด: 257)
Drupal\Core\Entity\EntityTypeManager->getHandler() (บรรทัด: 196)
Drupal\Core\Entity\EntityTypeManager->getStorage() (บรรทัด: 497)
Drupal\Core\Entity\EntityBase::loadMultiple() (บรรทัด: 19)
Drupal\ggroup\Routing\SubgroupRouteProvider->getRoutes()
call_user_func() (สาย: 146)
Drupal\Core\Routing\RouteBuilder->rebuild() (บรรทัด: 83)
Drupal\Core\ProxyClass\Routing\RouteBuilder->rebuild() (บรรทัด: 67)
Drupal\Core\Routing\RouteProviderLazyBuilder->getRouteProvider() (บรรทัด: 104)
Drupal\Core\Routing\RouteProviderLazyBuilder->getRoutesByPattern() (บรรทัด: 115)
Drupal\devel\EntityTypeInfo->getPathParts() (บรรทัด: 100)
Drupal\devel\EntityTypeInfo->setEntityTypeLinkTemplate() (บรรทัด: 75)
Drupal\devel\EntityTypeInfo->entityTypeAlter() (บรรทัด: 94)
devel_entity_type_alter() (บรรทัด: 539)
Drupal\Core\Extension\ModuleHandler->alter() (บรรทัด: 334)
Drupal\Core\Plugin\DefaultPluginManager->alterDefinitions() (บรรทัด: 127)
Drupal\Core\Entity\EntityTypeManager->findDefinitions() (บรรทัด: 175)
Drupal\Core\Plugin\DefaultPluginManager->getDefinitions() (บรรทัด: 22)
Drupal\Core\Plugin\DefaultPluginManager->getDefinition() (บรรทัด: 136)
Drupal\Core\Entity\EntityTypeManager->getDefinition() (บรรทัด: 257)
Drupal\Core\Entity\EntityTypeManager->getHandler() (บรรทัด: 196)
Drupal\Core\Entity\EntityTypeManager->getStorage() (บรรทัด: 247)
Drupal\views\EventSubscriber\ViewsEntitySchemaSubscriber->onEntityTypeDelete() (บรรทัด: 51)
Drupal\views\EventSubscriber\ViewsEntitySchemaSubscriber->onEntityTypeEvent()
call_user_func() (สาย: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (บรรทัด: 145)
Drupal\Core\Entity\EntityTypeListener->onEntityTypeDelete() (บรรทัด: 167)
Drupal\Core\Entity\EntityDefinitionUpdateManager->uninstallEntityType() (บรรทัด: 490)
Drupal\Core\Extension\ModuleInstaller->ถอนการติดตั้ง() (บรรทัด: 91)
Drupal\Core\ProxyClass\Extension\ModuleInstaller->ถอนการติดตั้ง() (บรรทัด: 174)
Drupal\system\Form\ModulesUninstallConfirmForm->submitForm()
call_user_func_array() (สาย: 114)
Drupal\Core\Form\FormSubmitter->executeSubmitHandlers() (บรรทัด: 52)
Drupal\Core\Form\FormSubmitter->doSubmitForm() (บรรทัด: 592)
Drupal\Core\Form\FormBuilder->processForm() (บรรทัด: 320)
Drupal\Core\Form\FormBuilder->buildForm() (บรรทัด: 73)
Drupal\Core\Controller\FormController->getContentResult()
call_user_func_array() (สาย: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (บรรทัด: 564)
Drupal\Core\Render\Renderer->executeInRenderContext() (บรรทัด: 124)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() (บรรทัด: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (บรรทัด: 158)
Symfony\Component\HttpKernel\HttpKernel->handleRaw() (บรรทัด: 80)
Symfony\Component\HttpKernel\HttpKernel->handle() (บรรทัด: 58)
Drupal\Core\StackMiddleware\Session->handle() (บรรทัด: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle() (บรรทัด: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass() (บรรทัด: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle() (บรรทัด: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (บรรทัด: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (บรรทัด: 23)
Stack\StackedHttpKernel->handle() (บรรทัด: 708)
Drupal\Core\DrupalKernel->handle() (บรรทัด: 19)
4uk4 avatar
cn flag
คุณสามารถโพสต์ข้อความแสดงข้อผิดพลาดทั้งหมดพร้อมการติดตามสแต็กได้หรือไม่
ke flag
คุณสามารถดูได้จากข้อบกพร่อง เช่น [#2351353](https://www.drupal.org/project/drupal/issues/2351353) และ [#2930715](https://www.drupal.org/project/drupal/issues /2930715) ซึ่งปัญหาที่แตกต่างกันทำให้เกิดข้อผิดพลาดดั้งเดิม สมมุติว่ามัน "คงที่" ฉันแค่สงสัยว่าผู้คนมักจะจัดการกับมันอย่างไร
cn flag
ดูเหมือนว่าเป็นโมดูล devel ที่ทำให้เกิดข้อผิดพลาด (อย่างน้อยในการทำซ้ำนี้) - คุณสามารถถอนการติดตั้งโมดูลนั้นหรือคุณเพียงแค่ลงเอยในลูปเดียวกัน
4uk4 avatar
cn flag
ปัญหาสองข้อที่กล่าวถึงคือข้อผิดพลาดหลักที่เกิดขึ้นในช่วงต้นของปี 2014 และอีกปัญหาหนึ่งจากโมดูลร่วมจากปี 2017 ซึ่งแก้ไขแล้วทั้งคู่ ในกรณีของคุณ ผู้ร้ายคือโมดูล devel แม้ว่า `Drupal\devel\EntityTypeInfo->getPathParts` กำลังเรียกการสร้างเส้นทางใหม่สองครั้ง และสิ่งนี้เกิดจากสองโมดูลที่แตกต่างกัน Ggroup และ Views เรียกใช้โดยบังเอิญที่โชคร้ายที่ devels เปลี่ยน hook หลายครั้ง
ke flag
RouteProviderLazyBuilder ควรตั้งค่าสถานะการสร้างใหม่ของตัวเองก่อนที่จะพยายามสร้างใหม่หรือไม่
ke flag
ฮ่า ฉันถอนการติดตั้ง devel และตอนนี้ฉันได้รับ Symfony\Component\Routing\Exception\RouteNotFoundException: ไม่มีเส้นทาง "devel.admin_settings" ใน Drupal\Core\Routing\RouteProvider->getRouteByName() (บรรทัดที่ 206 ของ core/lib/Drupal/Core/Routing/RouteProvider.php)
4uk4 avatar
cn flag
ความจริงที่ว่าตัวสร้างเส้นทางทำงานผ่านคลาสพร็อกซีที่สร้างขึ้นโดยขี้เกียจนั้นไม่สำคัญ ฉันจะกำจัด Ggroup ก่อน โมดูลนี้ใช้ไม่ได้กับ Devel ในความคิดของฉัน มันพยายามที่จะได้รับเส้นทางจากเอนทิตีที่ยังไม่ค้นพบข้อมูลประเภทเอนทิตี และ devel กำลังเชื่อมต่อกับการค้นพบประเภทเอนทิตีเพื่อทำสิ่งของตัวเองก่อนที่จะสร้างเส้นทาง
miststudent2011 avatar
fr flag
คุณใช้โปรแกรมแก้ไขจากปัญหา [#2726209](https://www.drupal.org/project/devel/issues/2726209#comment-13573873) หากใช่ ให้นำโปรแกรมแก้ไขออกแล้วลองอีกครั้ง มันอาจจะแก้ปัญหาของคุณได้ดีที่สุด
ke flag
อืม. ฉันเคยใช้แพตช์นั้นแต่ฉันลบมันออกจากโปรแกรมแต่งเพลง และเพิ่มแฮ็กบางอย่างใน RouteProviderLazyBuilder การเปลี่ยนแปลงมากเกินไปในครั้งเดียว ดูเหมือนว่าการลบแพตช์นั้นก็เพียงพอแล้วในตัวมันเอง ฉันคิดว่า Devel จำเป็นต้องเพิ่มบางอย่างเพื่อป้องกันสิ่งนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา