LESS 编译器:意外的令牌 u

LESS Compiler: Unexpected token u

当我尝试使用 Web Essentials 在 Visual Studio 中编译 LESS 模板时,我收到一条错误消息,指出 "Unexpected token u" 没有文件名、行号和列号。为什么会这样?

根据我的经验,当 LESS 试图从一个 LESS 文件输出一个 CSS 文件,而结果 CSS 文件为空时,就会发生这个错误。在我的例子中,这是在删除一些 font-face 声明之后发生的,这使得生成的 CSS 文件为空。在我添加一个将输出到 CSS 文件的 class 之前,LESS 不会编译。

可在此处找到详细信息:https://github.com/madskristensen/WebEssentials2013/issues/1696

我将此添加到 Whosebug,因为我无法在我的工作场所访问 Github。我希望这对某人有所帮助。

转到 %USERPROFILE%\AppData\Local\Microsoft\VisualStudio.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");

瞧瞧; LESS 对输出为空的文件的编译再次起作用。

来源: https://github.com/madskristensen/WebEssentials2013/issues/1696

您还可以在 less 文件中添加重要注释 /**/@charset "utf-8";,如此处所述 https://github.com/madskristensen/WebEssentials2013/issues/1696