2015-01-29 2 views
11

Когда я пытаюсь скомпилировать LESS-шаблон в Visual Studio с помощью Web Essentials, появляется сообщение об ошибке «Неожиданный токен u» без имени файла, номера строки и номера столбца. Почему это происходит?LESS Компилятор: Неожиданный токен u

ответ

26

Перейти к %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\12.0\Extensions, который является папкой, в которой проживают расширения для индивидуальных пользователей Visual Studio. WebEssentials будет находиться в подпапке с произвольно сгенерированным именем.

Изнутри папки WebEssentials, откройте файл Resources\nodejs\tools\server\services\srv-less.js и перейти к строке 65, которая гласит:

map = JSON.parse(output.map); 

Проблема заключается источник карты вывод может быть неопределенным значением. JSON.parse может анализировать только строки, поэтому перед синтаксическим анализом он выводит это строковое значение "undefined", но JSON не признает это действительным токеном. (Он понимает только нулевое значение, а не неопределенное значение.)

Итак ... изменение строки 65 следующим образом:

map = JSON.parse(output.map || "null"); 

и вуаля; Меньшая компиляция файлов с пустым выпуском работает снова.

Источник: https://github.com/madskristensen/WebEssentials2013/issues/1696

+0

Wow. это отличный ответ. –

+3

Спасибо, это действительно полезно. Убедитесь, что вы перезапустили Visual Studio после изменения файла srv-less.js. –

+0

блестящий ответ, исправлен мой выпуск. – punkologist

1

Из моего опыта эта ошибка возникает, когда LESS пытается вывести файл CSS из файла LESS, а полученный файл CSS пуст. В моем случае это произошло после удаления некоторых объявлений font-face, которые оставили полученный файл CSS пустым. LESS не будет компилироваться, пока я не добавлю класс, который будет выводиться в файл CSS.

Подробности можно найти здесь: https://github.com/madskristensen/WebEssentials2013/issues/1696

Я добавляю это StackOverflow, потому что я не могу получить доступ к Github на моем рабочем месте. Я надеюсь, что это помогает кому-то.