URL-адреса в файлах CSS, нарушенных плагинами ресурсов Grails 1.2.7

Недавно обновил проект 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-адреса)

Ресурс GET:/img/uniform-assets/checkbox.png net:: ERR_UNKNOWN_URL_SCHEME

Ответы

Ответ 1

В соответствии с моим комментарием ранее, это не было проблемой для меня, потому что по умолчанию все ресурсы в /images, /css и /js выполняются как ресурсы adhoc в 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/**'
]

Но, как я уже сказал, вам может не понадобиться добавлять adhoc для существующих ресурсов в приложении grails.

Вперед

  • grails clean (чтобы быть на более безопасной стороне)
  • grails run-app.
  • Очистить кеш браузера (я бы предпочел использовать режим инкогнито в Chrome, если использовал Chrome)
  • Устранить URL-адрес приложения

Он больше не должен жаловаться на ресурс.