CSS 文件中的 URL 被 Grails 资源插件 1.2.7 破坏
Posted
技术标签:
【中文标题】CSS 文件中的 URL 被 Grails 资源插件 1.2.7 破坏【英文标题】:URLs within CSS files broken with Grails resources plugin 1.2.7 【发布时间】:2014-05-02 15:31:26 【问题描述】:最近将一个 grails 项目升级到 2.3.7,并将插件升级到最新版本,这将 Resources 插件带到了 1.2.7。这适用于 Grails 2.1.2 和资源插件 1.2RC3,但现在不是:
每当我有一个 css 文件通过这样的 URL 引用某些东西时
.checkbox-input-wrap.checked
background-image: url(/img/uniform-assets/checkbox.png);
在网页上它会导致此错误(它在 URL 的前面留下“资源:/”)
获取资源:/img/uniform-assets/checkbox.png net::ERR_UNKNOWN_URL_SCHEME
【问题讨论】:
无法复制问题。能够使用资源 1.2.7 访问任何资源。你能添加更多信息来调试吗? 我在使用 grails 2.3.6 和资源插件 1.2.7 时遇到了同样的问题,并且无法解决该问题。插件版本 1.2.1 可以正常工作,所以我暂时恢复了。 @ascu 降级也对我有用。打算再四处逛逛。 我在 2.3.7 和 1.2.7 版本的插件上有一个非常相似的问题。字体未加载——获取资源:/fonts/open-sans/Bold/OpenSans-Bold.svg net::ERR_UNKNOWN_URL_SCHEME 【参考方案1】:根据我之前的评论,这对我来说不是问题,因为默认情况下,/images
、/css
和 /js
下的所有资源都作为 Grails 中的临时资源提供,我正在使用 .png
进行测试来自images
的文件。
我的同事再次遇到了这个问题,这让我三思而后行。 :) 就他而言,他试图从应用程序中使用的插件提供的/fonts
访问字体。
在尝试以下答案之前,我尝试通过添加以下配置来禁用 css 重写:
//Not required
//grails.resources.rewrite.css = false
但这对我来说毫无意义,因为我正在处理 font
资源。
最终,将其作为Config.groovy
的一部分添加到fonts
就成功了。对于您的情况,您需要执行以下操作:
grails.resources.adhoc.includes = ['/img/**']
//If resource served from a plugin
//grails.resources.adhoc.includes = ['/plugins/**', '/img/**']
如果你已经有了这个配置,它看起来像:
grails.resources.adhoc.includes = [
'/images/**', '/css/**', '/js/**', '/img/**'
]
但正如我所说,您可能不需要为 grails 应用程序中的现有资源添加临时包含。
继续
grails clean
(为了安全起见)
grails run-app
。
清理浏览器缓存(如果使用 Chrome,我更喜欢 Chrome 中的隐身模式)
点击应用网址
它不应该再抱怨资源了。
【讨论】:
我也注意到 /fonts 文件的问题。我以为我已尝试更新我的临时包含,但鉴于您的成功,我会再试一次。 希望你这次能成功。您可能已经添加为adhoc.patterns
而不是adhoc.includes
,因为我也有一段时间感到困惑。 :) @Pete
有效!请注意,我们还使用了缓存资源和压缩资源,一切看起来都很好。它最初对我不起作用,因为我的浏览器正在缓存某些内容,并且我需要在添加适当的临时包含后进行 shift+refresh(通常不需要使用缓存资源)。以上是关于CSS 文件中的 URL 被 Grails 资源插件 1.2.7 破坏的主要内容,如果未能解决你的问题,请参考以下文章
使用 grails 2.2.0 和资源插件找不到自定义 jquery css 图像
在Spring MVC中管理HTML资源(CSS,JS文件)
UrlMappings 将 URL 指向 Grails 中的资产管道文件