我正在更新一个从Drupal8.7到Drupal8.8的站点,在运行drush updb之后,我遇到了以下错误:
[error] TypeError: Argument 2 passed to Drupal\pathauto\AliasStorageHelper::__construct() must be an instance of Drupal\path_alias\AliasRepositoryInterface, instance of Drupal\Core\Path\AliasRepository given, called in drupal/core/lib/Drupal/Component/DependencyInjection/Container.php on line 289 in Drupal\pathauto\AliasStorageHelper->__construct() (line 79 of drupal/modules/contrib/pathauto/src/AliasStorageHelper.php) #0 drupal/core/lib/Drupal/Component/DependencyInjection/Container.php(289): Drupal\pathauto\AliasStorageHelper->__construct(Object(Drupal\Core\Config\ConfigFactory), Object(Drupal\Core\Path\AliasRepository), Object(Drupal\Core\Database\Driver\mysql\Connection), Object(Drupal\pathauto\VerboseMessenger), Object(Drupal\Core\StringTranslation\TranslationManager), Object(Drupal\Core\Entity\EntityTypeManager))我在这里的链接中发现了一个类似的问题,似乎有一个解决方案(补丁)。
编辑:
我运行了一个composer命令,试图修复路径别名错误:
作曲家要求'drupal/pathauto:1.x-dev@dev‘
Ran composer更新和drush updb。以下是控制台显示的错误:
> [error] Argument 2 passed to Drupal\pathauto\AliasStorageHelper::__construct() must be an instance of Drupal\path_alias\AliasRepositoryInterface, instance of Drupal\Core\Path\AliasRepository given
> [error] Update failed: block_field_update_8001
> PHP Fatal error: Uncaught ReflectionException: Class Drupal\path_alias\AliasRepository does not exist in /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php:1174
> Stack trace:
> #0 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1174): ReflectionClass->__construct('Drupal\\path_ali...')
> #1 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(634): Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object(Symfony\Component\DependencyInjection\Definition), Array, true, 'path_alias.repo...')
> #2 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1281): Symfony\Component\DependencyInjection\ContainerBuilder->doGet('path_alias.repo...', 1, Array, true)
> #3 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1238): Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Object(Symfony\Component\DependencyInjection\Reference), Array, true)
> #4 /var/www/html/docroot/ in /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php on line 1174
[error] Update aborted by: system_update_8803, block_field_update_8001
[error] Finished performing updates.我还能用路径自动模块做些什么吗?
发布于 2021-01-28 08:30:09
您的意思是在drupal模块上“应用补丁”吗?您应该使用作曲家补丁,github页面cleary解释设置它,并使用补丁模块\core。
在你的情况下,应该是这样的:
{
"require": {
"cweagans/composer-patches": "~1.0",
"drupal/core-recommended": "^8.8",
},
"config": {
"preferred-install": "source"
},
"extra": {
"patches": {
"drupal/pathauto": {
"issue name": "https://www.drupal.org/files/issues/2020-04-27/3131286-3.patch"
}
}
}
}但是,这个问题已经“解决了”,所以它已经在模块的dev版本中了。在稳定的模块上应用可能会失败,所以您只需切换到模块的dev版本,也就是
composer require 'drupal/pathauto:1.x-dev@dev'请注意,这是最好避免在生产开发版本,除非严格必要。换句话说,如果您切换到dev,您应该尽快更新到路径自动程序的下一个版本。
https://drupal.stackexchange.com/questions/299788
复制相似问题