升级到 Symfony 5.3 时,服务“...”依赖于不存在的服务 "property_accessor"
The service "…" has a dependency on a non-existent service "property_accessor" when upgrading to Symfony 5.3
我们的包有问题 https://github.com/liip/LiipTestFixturesBundle/tree/2.x(请注意,我是这个包的维护者之一,问题不在于在项目中使用那个包)
Tests were broken 在主 2.x
分支上出现以下错误:
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: The service "nelmio_alice.property_accessor.std" has a dependency on a non-existent service "property_accessor". Did you mean this: "nelmio_alice.property_accessor.std"?
以下是在 vendor/nelmio/alice/src/Bridge/Symfony/Resources/config/property_access.xml
中声明该服务的方式:
<service id="nelmio_alice.property_accessor.std"
class="Nelmio\Alice\PropertyAccess\StdPropertyAccessor">
<argument type="service" id="property_accessor" />
</service>
应该调用此代码,因为 NelmioAliceBundle
已加载到 AppKernel
。
所以我们 added 将此设置为 composer.json
以禁止 symfony/property-access 5.3
并修复了错误:
"symfony/property-access": "^4.4 || ^5.0 , <5.3",
但如果我们删除该解决方法,它又会崩溃。而且我不明白是什么导致了这个问题。
禁止 symfony/framework-bundle
5.3 也修复了这个问题:https://github.com/liip/LiipTestFixturesBundle/pull/127/commits/a534419e61ef90ca2685d697b89b2ce225712cdc
当我们使用 symfony/framework-bundle
5.3 或 symfony/property-access
5.3 时,是什么导致缺少 property_accessor
?
如何重现错误
git clone git@github.com:liip/LiipTestFixturesBundle.git
cd LiipTestFixturesBundle
git checkout remove-required-symfony/property-access
composer install
vendor/bin/phpunit --testdox tests/Test/ConfigEventsTest.php
将 property_access: ~
添加到 framework
配置解决了问题 (commit)。
似乎服务在未配置时丢失。
该问题在全新安装的 Symfony 上可重现:
$ bin/console debug:container property_accessor
[critical] Error thrown while running command "debug:container property_accessor". Message: "No services found that match "property_accessor"."
No services found that match "property_accessor".
如果你也有这个问题,运行 composer require symfony/property-access
。
我们的包有问题 https://github.com/liip/LiipTestFixturesBundle/tree/2.x(请注意,我是这个包的维护者之一,问题不在于在项目中使用那个包)
Tests were broken 在主 2.x
分支上出现以下错误:
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: The service "nelmio_alice.property_accessor.std" has a dependency on a non-existent service "property_accessor". Did you mean this: "nelmio_alice.property_accessor.std"?
以下是在 vendor/nelmio/alice/src/Bridge/Symfony/Resources/config/property_access.xml
中声明该服务的方式:
<service id="nelmio_alice.property_accessor.std"
class="Nelmio\Alice\PropertyAccess\StdPropertyAccessor">
<argument type="service" id="property_accessor" />
</service>
应该调用此代码,因为 NelmioAliceBundle
已加载到 AppKernel
。
所以我们 added 将此设置为 composer.json
以禁止 symfony/property-access 5.3
并修复了错误:
"symfony/property-access": "^4.4 || ^5.0 , <5.3",
但如果我们删除该解决方法,它又会崩溃。而且我不明白是什么导致了这个问题。
禁止 symfony/framework-bundle
5.3 也修复了这个问题:https://github.com/liip/LiipTestFixturesBundle/pull/127/commits/a534419e61ef90ca2685d697b89b2ce225712cdc
当我们使用 symfony/framework-bundle
5.3 或 symfony/property-access
5.3 时,是什么导致缺少 property_accessor
?
如何重现错误
git clone git@github.com:liip/LiipTestFixturesBundle.git
cd LiipTestFixturesBundle
git checkout remove-required-symfony/property-access
composer install
vendor/bin/phpunit --testdox tests/Test/ConfigEventsTest.php
将 property_access: ~
添加到 framework
配置解决了问题 (commit)。
似乎服务在未配置时丢失。
该问题在全新安装的 Symfony 上可重现:
$ bin/console debug:container property_accessor
[critical] Error thrown while running command "debug:container property_accessor". Message: "No services found that match "property_accessor"."
No services found that match "property_accessor".
如果你也有这个问题,运行 composer require symfony/property-access
。