2012-01-17 2 views
2

У меня есть два файла меньше в public/stylesheets. Я использую Express.js для работы с ними в качестве файлов CSS.Узел js - Меньше css не может найти файл для импорта

Первый файл, one.less выглядит следующим образом:

@import "another.less"; 

h1 { 
    color: red; 
} 

Второй файл, another.less выглядит следующим образом:

p { 
    color: red; 
} 

При попытке загрузить страницу, сервер завершает работу с ошибкой :

file 'another.less' wasn't found. 

Я также пробовал абсолютный путь, но это не сработало.

Это моя конфигурация Express.js:

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] })) 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 
+1

не зная «меньше», ошибка о файле 'another.less' не найден, но вы предоставляете 'another.css', это правильно? – topskip

+0

Извините, на самом деле это файлы '.less'. Я починил это. Спасибо, что поймали это! – rovaughn

ответ

2

Edit: '@import "/ общественные/стилей/два";'

Оригинальное предложение не работает.

+0

Если я использую '.css', он не будет статически импортировать файл Less (т.е. в скомпилированном CSS, есть строка' @import "another.css"; '. Я хочу объединить файлы Less во время компиляции. Спасибо за идею, хотя! – rovaughn

+1

Правильно. Попробуйте это, тогда '@import"/public/stylesheets/two ";' –

+0

Это сработало! Спасибо! К сожалению, он будет только перекомпилировать, если я обновлю 'one.less'. Если я только обновляю 'another.less', он не изменится. Знаете ли вы какое-либо исправление для этого? – rovaughn

3

Для этого сейчас необходимо использовать для подключения без подключения. Исходный меньше компилятор, который вы используете выше, является частью соединения, фактически, и если вы посмотрите текущий список проблем, вы увидите, что TJ решил не поддерживать меньше в подключении из-за слишком разных компиляторов (случай «не может сделать всех счастливыми»):

https://github.com/senchalabs/connect/pull/174

Вы можете посмотреть подключить менее здесь: https://github.com/MartinodF/connect-less

Я положу шаги для установки здесь, но понять, они могут устаревать (проверьте страницу github, если это не работает, и дайте мне знать, и я синхронизируюсь):

Use NPM to install connect-less

npm install connect-less

Then load it in your app, specifying the source (and optionally destination) directory

app.use(require('connect-less')({ src: __dirname + '/public/' }));

Это работало безупречно для меня на коробке Линукс ARMv7/Trimslice с expressjs 2.5.2 и узел 6,6

+0

Работы для express 3 и узла 10 тоже – simonlchilds