Обновление 3/5/2012 : Ребята из Bootstrap исправили эту проблему в версии 2.0.2 Bootstrap (еще не выпущена). Смотрите этот коммит .
Основная ошибка в том, что текущая версия less.js не позволяет вам использовать переменную for для значения url () напрямую (например, url(@iconWhiteSpritePath)
) - вместо этого вы должны использовать интерполяцию строк (например, url("@{iconWhiteSpritePath}")
), что выполняет то же самое. Парни из начальной загрузки просто обновили свой синтаксис, чтобы учесть эту причуду.
Оригинальный ответ
Сегодня я столкнулся с точной проблемой и выяснил ее причину. Поскольку ваш стек на несколько версий раньше моего (я использую Bootstrap 2.0 и less.js 1.2.2), я не могу быть уверен, что это та же проблема, но, возможно, она связана.
В любом случае, проблема для меня заключалась в том, что Twitter Bootstrap определяет некоторые переменные:
@iconSpritePath: "../img/glyphicons-halflings.png";
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
И затем использовать их непосредственно в значении url () для фонового изображения в sprites.less:
[class^="icon-"],
[class*=" icon-"] {
display: inline-block;
width: 14px;
height: 14px;
line-height: 14px;
vertical-align: text-top;
background-image: url(@iconSpritePath);
background-position: 14px 14px;
background-repeat: no-repeat;
.ie7-restore-right-whitespace();
}
.icon-white {
background-image: url(@iconWhiteSpritePath);
}
Согласно обсуждению в этой проблеме Github , которая вызывает серьезную проблему. Когда less.js подавляет это значение, вся компиляция завершается неудачей.
Хорошая новость заключается в том, что в этой проблеме есть исправление, предоставленное csnover. Просто измените эту строку в tree.URL:
if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
до
if (typeof(window) !== 'undefined' && typeof(val.value) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
и вы должны быть установлены. Другими словами, мы просто гарантируем, что val.value установлен так, чтобы charAt () не подавился неопределенным.
Надеемся, что это исправление скоро будет добавлено в проект, и Bootstrap будет работать с less.js в среде браузера из коробки.