Assetic - 路线“_assetic_001d5b7_0”不存在

Posted

技术标签:

【中文标题】Assetic - 路线“_assetic_001d5b7_0”不存在【英文标题】:Assetic - Route "_assetic_001d5b7_0" does not exist 【发布时间】:2012-07-12 20:14:00 【问题描述】:

这个问题似乎已被多次询问,但没有一个解决方案适合我。

我在我的 prod 环境中,这是我所做的:

在执行任何操作之前/之后清除缓存 尝试注释掉 config_dev 中的 _assetic 内容并确保它不在其他任何地方(这在 prod env 中并不重要) 将 use_controller 设置为 true 和 false(显然适用于 true 但不使用编译后的文件)

我还有什么遗漏的吗?这些文件从 php app/console assetic:dump --env=prod --no-debug 文件名与错误中的文件名相匹配,减去路由内容。

【问题讨论】:

您是否在config.yml 中设置了bundles: [MyBundle, MyOtherBundle] 选项?您使用的是什么版本的 Assetic 和 AsseticBundle? 感谢您的回复。不,还没设置,它实现了什么? Assetic 将仅搜索 bundles[] 中指定的捆绑包中的资产。 我的应用程序几乎完全是客户端,我的所有资产都链接在 app/resources/views/base.html.twig 中,我应该添加未列出任何捆绑包的捆绑包参数吗? 我不明白为什么它甚至试图在生产模式下加载路线。它不应该尝试加载静态文件吗? 【参考方案1】:

在这里尝试了所有建议的解决方案后,对我来说这只是模板名称的问题。我有.twig 但没有.html.twig 扩展名,仅此而已。

【讨论】:

【参考方案2】:

在尝试覆盖我的 Twig 模板目录后,我在 Symfony 3.3 中遇到了这个问题。不知道如何解决这个问题,但现在恢复到默认模板目录配置解决了这个问题。

# config.yml
twig:
    paths: ["%kernel.project_dir%/templates"] # Remove this line to use default dir

【讨论】:

【参考方案3】:

就像@Marcus 所说,如果你尝试过:

php bin/console cache:clear

它没有帮助,请手动清除your_project_root/var/cache 文件夹(删除所有文件夹和文件)。如果您使用 unix/linux 系统,并且收到类似“错误删除文件:权限被拒绝”的系统消息,则需要先更改对 dir 的访问权限,例如可以使用控制台命令

sudo chmod -R 0777 /your_site_directory/var/cache/

然后你可以清除缓存目录。

【讨论】:

【参考方案4】:

面临同样的问题,但原因是我将模板命名为“something.twig”,而不是“something.html.twig”。

不扫描扩展名中没有 .html 的模板似乎很重要。

结果 - 模板工作,但资产不执行转储/添加路由从它的资产。添加 .html 即可解决问题。

【讨论】:

【参考方案5】:

使用哑字符(换行符、空格)更新 config.yml 可消除该错误。似乎通过这样做,我们强制重新生成缓存。 (Symfony 3.0.0)

【讨论】:

【参考方案6】:

也许为时已晚,但是……什么对我有用:

php composer.phar install
php app/console cache:clear
php app/console cache:warmup

【讨论】:

【参考方案7】:

也许你已经从 app/routing_dev.yml 中移除了资产路由

_assetic:
    resource: .
    type:     assetic

【讨论】:

我不敢相信文档中没有提到它symfony.com/doc/current/assetic/asset_management.html【参考方案8】:

如果清除缓存或转储资产不起作用。试试noisebleed 的评论:

// app/config_dev.yml
assetic:
    use_controller: true
    bundles: ['FooBarBundle']

【讨论】:

我遇到了这个问题,是因为在 bundles 数组中没有包含我的包。【参考方案9】:

我在一分钟前遇到了这个问题。清理缓存对我有用:

app/console cache:clear --env=prod

希望这会有所帮助。

【讨论】:

不,不起作用,这是我尝试的第一件事。不过感谢您的回答,我无法解决它,所以我停止使用资产并设置了一个 grunt 脚本来编译我的所有文件。 IME basic "rm -rf app/cache" 似乎比 cache:clear 或 ot:cc app/console 命令更可靠。 @Marcus,谢谢我已经使用控制台命令多次删除了缓存,但问题仍然存在,“rm -rf”成功了!!!

以上是关于Assetic - 路线“_assetic_001d5b7_0”不存在的主要内容,如果未能解决你的问题,请参考以下文章

rbenv 权限在 Ubuntu 上被 Assetic 拒绝

Assetic 未创建组合链接

如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?

Assetic 找不到文件

Symfony2 - Assetic - css 字体图标

如何让 Assetic + sass 在 Windows 中与 Symfony2 一起工作?