2014-01-30 3 views
3

Я установил меньше-middleware для компиляции меньше на лету, он отлично работал в течение довольно долгого времени, но я менял некоторые пакеты, делал обновление npm и так далее, но ничего действительно меньше связанный ...Меньше не компилируется как промежуточное ПО nodejs

И он перестает работать. Когда я с просьбой, например main.css (он должен составить main.less и служить ему в качестве CSS), я получаю странные ошибки в консоли:

LESS Syntax error : Object function (deleteValue) { 
    for (var i = 0; i < this.length; i++) { 
     if (this[i] == deleteValue) {   
      this.splice(i, 1); 
      i--; 
     } 
    } 
    return this; 
} has no method 'charAt' 
    LESS File : /srv/sicy-node/public/css/main.less null:-1 
TypeError: Object function (deleteValue) { 
    for (var i = 0; i < this.length; i++) { 
     if (this[i] == deleteValue) {   
      this.splice(i, 1); 
      i--; 
     } 
    } 
    return this; 
} has no method 'charAt' 
at Object.Parser.parser.parsers.parsers.ruleProperty (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1938:37) 
at Object.Parser.parser.parsers.parsers.rule (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1479:48) 
at Object.Parser.parser.parsers.parsers.primary (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:721:76) 
at Object.Parser.parser.parsers.parsers.block (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1427:51) 
at Object.Parser.parser.parsers.parsers.ruleset (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1461:48) 
at Object.Parser.parser.parsers.parsers.primary (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:721:91) 
at Object.Parser.parser.parsers.parsers.block (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1427:51) 
at Object.Parser.parser.parsers.parsers.directive (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:1715:34) 
at Object.Parser.parser.parsers.parsers.primary (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:722:64) 
at Object.Parser.parser.parse [as parse] (/srv/sicy-node/node_modules/less-middleware/node_modules/less/lib/less/parser.js:498:61) 

Это как установлено ПО промежуточного слоя:

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

ответ

0

Кажется, что это была проблема с разрешениями. Я только что установил новые разрешения, и все снова работает отлично. Поэтому, если у кого-то есть одна и та же проблема, убедитесь, что меньше можно создать новый файл, а этот оригинал меньше для вашего приложения.

Извините за то, что потратил время.

Edit: Проблема может возникнуть, если вы используете @import URL ("something.less"), попробуйте сбросив часть URL: @impurt "something.less"

0

Похоже, что это результат that bug in Less 1.6.1 (в основном, Меньше сбой, если какой-либо другой модуль расширяет Array.prototype). Обновление less-middleware к более поздней версии. Меньшая версия должна помочь (вы можете обновить свою установку, изменив версию в this file на ~1.6.3, если она не обновляется автоматически).

0

не может быть решение вашей точной задачи, но это, как я сделать меньше компиляции с использованием хрюкать, Infact не только я, но большинство людей делает, и я нахожу это очень удобно.

grunt обеспечивает отличный способ автоматизировать процесс трансмутации МЕНЬШЕ в CSS. Сначала вам нужно будет создать несколько инструментов, но как только вы закончите с этим, вы сможете легко использовать систему со всеми вашими проектами.

Grunt - это бегун задачи, основанный на JavaScript, который может быть настроен так, чтобы следить за изменениями, внесенными в ваши файлы LESS. Когда содержимое изменяется, оно автоматически компилирует файлы в мини-файл CSS.

Шаг 1: Установка Node.js Получить инсталляционный пакет Nodejs.com, и установить его. Бинарные файлы доступны для Mac OS X, Windows, Linux и SunOS. Вы также можете скомпилировать его из исходного кода.

Шаг 2: Установите Grunt Установите Grunt с помощью менеджера пакетов Node:

sudo npm install -g grunt 
sudo npm install -g grunt-cli 

Шаг 3: Создать файл конфигурации Grunt

Создать Gruntfile.js файл в вашем проекте каталог. Затем скопируйте и вставьте содержимое ниже. Вам просто нужно будет изменить (прокомментированные) строки, которые определяют, какие файлы вы хотите видеть в Grunt, и где поместить скомпилированный файл CSS.

module.exports = function(grunt) { 
      grunt.initConfig({ 
      less: { 
       development: { 
        options: { 
         compress: true, 
         yuicompress: true, 
         optimization: 2 
         }, 
        files: { 
         // target.css file: source.less file 
          "sites/all/themes/jiandan/css/main.css": "sites/all/themes /jiandan/less/main.less" 
          } 
       } 
      }, 
     watch: { 
     styles: { 
       // Which files to watch (all .less files recursively in the less directory) 
      files: ['sites/all/themes/jiandan/less/**/*.less'], 
      tasks: ['less'], 
      options: { 
       nospawn: true 
       } 
     } 
    } 
}); 

grunt.loadNpmTasks('grunt-contrib-less'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 

grunt.registerTask('default', ['watch']); 
}; 

Шаг 4: Настройка пакета

cd YOUR_PROJECT_DIRECTORY 
npm init 

выше предложит вам предоставить дополнительную информацию о вашем проекте.

Когда вы закончите, откройте пакет .JSON файл, расположенный в каталоге проекта, и добавьте следующие строки кода:

"devDependencies": { 
    "grunt": "~0.4.1", 
    "grunt-contrib-less": "~0.5.0", 
    "grunt-contrib-watch": "~0.4.0" 

},

Затем выполните следующую команду, чтобы установить зависимости пакетов:

npm install 

Шаг 5: Начало Грунт

grunt 

Ну, это все, и вы можете скомпилировать все свое меньше всего за один выстрел. Я согласен с тем, что изначально он выглядит сложным, но как только вы привыкнете к нему, вы найдете его очень простым. Все, что вам нужно сделать, это создать файл конфигурации для каждого проекта, и Grunt позаботится обо всем остальном.

+0

Спасибо, я определенно попробуйте это скоро! Я только что выяснил проблему (опубликует как сам ответ) – ewooycom

Смежные вопросы