Symfony 3 (Prod):您请求了一个不存在的服务"asset .asset_manager"


Symfony 3 (Prod) : You have requested a non-existent service "assetic.asset_manager"

我正在尝试运行这个cmd,它应该为prod环境转储资产文件:

php bin/console assetic:dump --env=prod

该命令返回以下错误:

' DependencyInjection '例外' [Symfony '组件ServiceNotFoundException]您请求了一个不存在的服务"assetic.asset_manager"。

当我尝试通过浏览器访问prod页面时,我得到了以下错误:

在呈现模板期间抛出异常("无法为命名路由"_assetic_2f6a151_0"生成URL,因为该路由不存在。")在YOCoreBundle:: layout.html。第14行

当我运行这个cmd时,一切都在开发环境中正常工作(静态文件被缩小并存储在正确的文件夹中):

php bin/console assetic:dump
关于我的配置:

的作曲家。json:

{
  "require": {
     "symfony/assetic-bundle": "^2.8.0",
     "leafo/scssphp": "~0.6",
     "patchwork/jsqueeze": "~1.0"
  }
}

在app/config/config。我有以下代码:

assetic:
  debug:          '%kernel.debug%'
  use_controller: '%kernel.debug%'
  filters:
    cssrewrite: ~
    jsqueeze:   ~
    scssphp:
      formatter: 'Leafo'ScssPhp'Formatter'Compressed'

AsseticBundle在AppKernel.php中声明:

$bundles = [
  new Symfony'Bundle'AsseticBundle'AsseticBundle(),
];

我真的不知道问题在哪里。如果有人对此有什么想法,我将不胜感激。

@Freelancer,你给出的答案是Symfony2,而op正在使用Symfony3。

清除生产缓存的命令如下:

php bin/console cache:clear --env=prod

和清除dev (development)缓存:

php bin/console cache:clear

不需要——no-debug。另外,在开发环境中,很多时候你不需要为某些更改清除缓存(例如小枝更改);但是,当您进行重大更改时,一定要清除prod的缓存。

编辑# 2。您可能还需要运行这个命令:

$ php bin/console assetic:dump --env=prod --no-debug

试一试!

这可能是一个缓存问题,正如你所说的,在开发模式下一切都很好,可能是因为symfony在开发模式下重新生成了缓存,而不是在prod环境中。

我认为你应该执行以下命令来解决它:

php bin/console cache:clear --env=prod