Symfony 3(Prod):您已请求不存在的服务" assetic.asset_manager"

时间:2016-06-29 12:37:57

标签: php symfony assetic

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

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

此cmd返回以下错误:

  

[Symfony的\元器件\ DependencyInjection \异常\ ServiceNotFoundException的]       您已请求不存在的服务" assetic.asset_manager"。

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

  

在渲染模板期间抛出了异常       ("无法生成指定路由的URL" _assetic_2f6a151_0"因为这样的路由不存在。")       在YOCoreBundle :: layout.html.twig第14行

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

php bin/console assetic:dump

关于我的配置:

在composer.json中:

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

在app / config / config.yml中,我有以下代码:

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

在AppKernel.php中声明了AsseticBundle:

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

我真的不知道问题出在哪里。 如果有人对此有所了解,那将非常感激。 提前谢谢。

2 个答案:

答案 0 :(得分:4)

@Freelancer,你给出的答案是针对Symfony2的,操作是使用Symfony3。

清除生产缓存所需的命令是:

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

并清除dev(开发)缓存:

php bin/console cache:clear

不需要--no-debug。此外,在开发环境中的大量时间,您不需要清除缓存以进行某些更改(即树枝更改);但是当你做出重大改变时,肯定会清除prod的缓存。

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

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

试试吧!

答案 1 :(得分:3)

这可能是一个缓存问题,因为你说在开发模式下一切正常,可能是因为symfony已经在dev中重新生成缓存而不是你的prod env。

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

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