Aktualizacja 3/5/2012: Bootstrapowcy naprawili ten problem w wersji 2.0.2 Bootstrapa (jeszcze nie opublikowany). Zobacz this commit.
Zasadniczy błąd jest, że obecna wersja less.js nie pozwalają na użycie zmiennej do adresu URL() wartość bezpośrednio (np url(@iconWhiteSpritePath)
) - zamiast tego trzeba użyć interpolacji ciąg (np url("@{iconWhiteSpritePath}")
) , który dokonuje tego samego. Faceci bootstrap po prostu zaktualizowali swoją składnię, aby wziąć pod uwagę to dziwactwo.
Original Odpowiedź
wpadłem dokładnie problemu dzisiaj i zorientowali się przyczyną.Ponieważ twój stack jest kilka wersji przed moim (używam Bootstrap 2.0 i less.js 1.2.2) Nie mogę być pewien, że to ten sam problem, ale prawdopodobnie jest powiązany.
Tak czy inaczej, problem dla mnie było to, że Twitter Bootstrap definiuje pewne zmienne:
@iconSpritePath: "../img/glyphicons-halflings.png";
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
A potem wykorzystując je bezpośrednio w wartości url() na tle wizerunku w 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);
}
Per dyskusji w this Github issue który jest przyczyną poważny problem. Gdy less.js dławi tę wartość, cała kompilacja kończy się niepowodzeniem.
Dobrą wiadomością jest poprawka w tym wydaniu, dostarczana przez csnover. Wystarczy zmienić tę linię w tree.URL:
if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
do
if (typeof(window) !== 'undefined' && typeof(val.value) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
i powinien być ustawiony. Innymi słowy, po prostu zapewniamy, że wartość val jest ustawiona tak, że charAt() nie dławi się niezdefiniowanym.
Mam nadzieję, że ta poprawka zostanie wkrótce zatwierdzona do projektu, a Bootstrap będzie działał z less.js w środowisku przeglądarki po wyjęciu z pudełka.
Możesz opublikować bezszyjkowy? – Todd
@Todd zaktualizował wpis. Styl.less działa jednak dobrze. – briangallagher
czy pokazuje załadowany/renderowany arkusz stylów w konsoli? –